return of the declared function of type
Hi gurus
I have a question, how can I find type in the function that is declared inside, but don't create do not package and own type.
For ex.:
Create or replace function test_func
return t_tab in pipeline as
type r_tab is (record
col1 test_tab.col1%type,
col2 test_tab.col2%type);
type t_tab is table of the r_tab;
v_tab t_tab;
Start
-some operations
end test_func;
Concerning
Hello
Necronus wrote:
Hi gurus
I have a question, how can I find type in the function that is declared inside, but don't create do not package and own type.
For ex.:
Create or replace function test_func
return t_tab in pipeline as
type r_tab is (record
col1 test_tab.col1%type,
col2 test_tab.col2%type);
type t_tab is table of the r_tab;
v_tab t_tab;
Start
-some operations
end test_func;
Concerning
You can not. If you want t_tab to be available outside test_func, then you must set outside test_func.
Tags: Database
Similar Questions
-
Date of the change in default when returned by the IIF function
Hello
Please can someone explain why the $vdate is displayed as a decimal number in the following code. It seems that the IIF() function returns a value by default and not what I put
Thank you.
< cfset vNow = DateFormat (Now (), ' mm/dd/yyyy') >
< cfoutput >
vNow = #vNow # < br / >
< / cfoutput >
< cfset $vdate = iif (true, vNow, "") >
< cfoutput >
$vdate = #vDate # < br / >
In the format $vdate = #DateFormat(vDate,"mm/dd/yyyy") # #TimeFormat(vDate, "hh:mm:ss") #.
< / cfoutput >
Too bad. I had to apply rated (IN ()) for the parameter of the IIR as well and it works:
-
That Dreamweaver has any shortcut to find the location of the functions or the valriable?
I have a function on the source code, but the function is not declared in the same form, more easy to find located functions and look at the source.
Your information and your help is much appreciated,
Kind regards
Iccsi,
In Code view, right-click > functions. This will display a list of all the functions used in your document.
-ST
-
Political VPD is applied on the political function!
Hi all
I ran this code:
BEGIN
DBMS_RLS. () ADD_POLICY
object_schema = > 'MYS ',.
object_name = > "MY_TAB"
POLICY_NAME = > "SELECT_LEVEL_POL"
function_schema = > 'MYS ',.
policy_function = > 'DATA_LEVEL ',.
statement_types = > ' SELECT INDEX.
);
END;
/
I know when I apply a political function on other tables (using VPD) this function does not apply the holder for this table (no predicate returned to its owner), but what has happened is the opposite when I select the table MY_TAB of its creator who is the creator of the function political he returned lines according to the predicate returned by the political function! (I tried with another user and the political function did the same thing and that that I'm not the creator)
Why? and how to solve?
Note: I use DB Oracle 11g R2
I did previously with another table and another function policy with the same scenario, but the selection of creator returned all lines (no predicate is applied).
The owner of the table CAN be affected by the policy of the CAE as well.
In your case - where the owner could select all the lines (no VPD applied predicate):
-that the user has not affected by the function
or
-that the user had the privilege of POLICE TAX-FREE ACCESS system - with this privilege, you can work around any policy of the CAE
-
How to use the goto function?
How to use the goto function in indesign javascript?
my script begins by chekcing if the input files are present or not... If one of the input files is not present, I want the n function put an end to the operation in the display of the message tht file exists... I was wondering to use goto for tht... then how to use it? or is there an alternative to that?
GoTo is generally frowned upon by the programmers.
The only legitimate use of goto is when you need to escape from a nested loop.
If you need to jump into a routine, use break or simply in return from the current function.
The model currently used by the SDK looks like this:
do { if(condition1 == false) break; if(condition2 == false) break; if(condition3 == false) break; doSomethingReallyCool(); }while(false);
'break' the jumps at the end of the do / while loop that always comes out when you reach the end of it (while (false))
Substances
-
Before then, the shift functions return type?
I can not stress which is the return type of these functions? numeric value or Member?
And if they come back that a member would be this fomula be valid (I have to take the average of March and June):
avgppl = @avgrange ("HRsummary"-> "territory", @list (@currmbr ("YearTotal"), @shift (@currmbr ("YearTotal"),-3)))
Thanks in advance!Hello
All the mentioned functions (Prior, Next, and shift) returns the values and non-members.
Concerning
-SM -
I'm currently testing our website with CF11. He is currently working with CF8 however after the migration to a new server running CF11 I met the following error.
The value returned by the function of load is not numeric.
The error occurred in
D:/applications/CFusion/CustomTags/NEC/COM/objects/address.cfc: line 263
Called from D:/apps/CFusion/CustomTags/NEC/com/objects/contact. CFC: line 331Called from D:/applications/CFusion/CustomTags/NEC/COM/objects/user.cfc: line 510
Called from D:/applications/CFusion/CustomTags/NEC/COM/objects/user.cfc: line 1675
Called from D:/website/NECPhase2/action. Validate.cfm: line 54
261: < cfif isNumeric (get.idCountry) >
262: < cfset rc = this.objCountry.setID (get.idCountry) >
263: < cfset rc = this.objCountry.load () >
264: < / cfif >
265: < cfset this.sPostcode = get.sPostcode >
Were there any changes between CF8 and CF11 which can cause this error?
Does anyone have any ideas?
The problem is in the charge function. There is a real return at the end of the function. The returntype of the function is set to digital. True is not digital, it will trigger an error.
-
How the two function return values
Dear all,
Please explain, how the two values of function return?
give a simple example.
OK, a few examples...
First example, using a type of structured on the database object:
SQL > create or replace type tMyValues as an object (yr number, number, number of dy mn)
2.Type of creation.
SQL > create or replace function getMyValues return tMyValues is
2 number of y: = extraction (year sysdate);
number of 3 m: = extraction (sysdate months);
number of 4 d: = extract (day of sysdate);
5. start
6 return new tMyValues(y,m,d);
7 end;
8.The function is created.
SQL > set serverout on
SQL > declare
2 myValues tMyValues;
3. start
4 myValues: = getMyValues();
5 dbms_output.put_line (' year: ' | myValues.yr);
6 dbms_output.put_line (' month: ' | myValues.mn);
7 dbms_output.put_line (' date: ' | myValues.dy);
8 end;
9.
Year: 2015
Month: 4
Day: 1PL/SQL procedure successfully completed.
Second example, using an associative array within PL/SQL:
SQL > set serverout on
SQL > declare
2 type tMyValues is table of the index number to varchar2 (10);
3 myValues tMyValues;
4
5 function getMyValues return tMyValues is
6 retValues tMyValues;
7. start
8 retValues ('Year'): = extraction (year sysdate);
9 retValues ('Month'): = extraction (sysdate months);
10 retValues ('Day'): = extract (day of sysdate);
11 return retValues;
12 end;
13. begin
14 myValues: = getMyValues();
15 dbms_output.put_line (' year: ' | myValues ('Year'));
16 dbms_output.put_line (' month: ' | myValues ('Month'));
17 dbms_output.put_line (' date: ' | myValues ('Day'));
18 end;
19.
Year: 2015
Month: 4
Day: 1PL/SQL procedure successfully completed.
For the pipeline functions, see the example I wrote on the link provided by ReemaPuri (answer No. 3) that I don't need to re - write what I did before.
-
Problems with the declarations of Type in Oracle 9i
Create OR replace Type Ty is object
(
attr1 varchar2 (30),
attr2 Varchar2 (30),
attr3 Varchar2 (30),
Manufacturer Ty function return AS a result,
Ty (p_attr1 IN Varchar2) constructor function
Return self as RESULT,
Constructor Function ty (p_attr1 IN Varchar2,
p_attr2 IN Varchar2)
Return to SELF, RESULT,
Constructor Function Ty (P_attr1 IN Varchar2,
P_attr2 IN Varchar2,
P_attr3 IN Varchar2)
Return self as RESULT
);
/
Create OR replace Type body Ty like
Ty function constructor return self as result that
Start
RETURN;
End;
Constructor function Ty(p_attr1 IN Varchar2) return
SELF as RESULT that
Begin
COTTAGES. Attr1: = p_attr1;
RETURN;
End;
Constructor Function Ty (p_attr1 IN Varchar2,
P_attr2 IN Varchar2)
Return self as RESULT that
Begin
COTTAGES. Attr1: = p_attr1;
COTTAGES. Attr2: = P_attr2;
RETURN;
End;
Constructor Function Ty (P_attr1 IN Varchar2,
P_attr2 IN Varchar2,
P_attr3 IN Varchar2)
Return self as RESULT that
Start
COTTAGES. Attr1: = P_attr1;
COTTAGES. Attr2: = P_attr2;
COTTAGES. Attr3: = P_attr3;
RETURN;
End;
End;
/
Declare
T1 Ty: = Ty();
Ty T2: = Ty ('A');
T3 Ty: = Ty('B','C');
T4 Ty: = Ty('D','E','F');
Begin
dbms_output.put_line (t1. Attr1);
dbms_output.put_line (t2.attr1);
dbms_output.put_line (t3. Attr1);
dbms_output.put_line (t4. Attr1);
End;
T4 Ty: = Ty('D','E','F');
*
ERROR on line 5:
ORA-06550: line 5, column 12:
PLS-00307: too many statements of "TY" corresponds to this call
ORA-06550: line 5, column 6:
PL/SQL: Ignored Element
ORA-06550: line 10, column 25:
PLS-00320: the declaration of the type of the expression is incomplete or
Malformed
ORA-06550: line 10, column 3:
PL/SQL: Statement ignored
Please help me what is the problem with me? I use Oracle 9i release 2.You don't need to declare a constructor for "all" attributes - you get one automatically. Remove the declaration of the complete constructor function on all 3 attributes, and you will find your block works fine dbms_outputs.
-
How to use the node function call library for a function in the dll with the data SUB type
Hi all
I would ask for your kind help
I am facing a problem with the call library node.
I have a C++ (stdcall) function, which has Sub as data type
XXXX error code (hwnd, lid, getValue, * Sub data1, * Sub data2)
data1 and data2 types are constantly changing based on the value of 'getValue '.
Mainly I can use the call library node several times and adapt each node according to the types of data data1, data2 and extract the values and use in the code. Here is no question. Real question is:
My question:
How can I use a node of library time call and make a case according to the 'getvalue', who will control the data1, data2 data type. Here I really seeking solutions.
My tests:
I used varaints as entry to the libray call node of the data1, data2 and selected parameters in the call libraby node as "Adapt to type. Here labview just crashed.
I appreciate your suggestions to feedbackand.
Thank you
Karine
You must allocate enough space for data1 and data2, and then pass a pointer to this space. An easy way to do this is the function to initialize table. Set the U8 type and size for the number of bytes required. Pass this array to the function as a pointer of table data.
After the function call returns, you need to extract the data in the table. You can do it manually, but a simple approach is to use the array of bytes to a string. Then, in a housing structure, use Unflatten chain to convert the string to the correct data type. This method also converts the "endianness" which will be probably necessary; Be sure to only set all entries for unflatten correctly.
-
Discover with function as datasource returns only the first line.
Hello
I created the following function to get the status of all the rules for the instances of SQL Server.
The data type of the function output has been configured as 'List of SQLInstanceRuleStatuss', where SQLInstanceRuleStatuss is the custom type, I created in the same module.
When I tested the function, it returns all instances of SQL Server with two other columns.
But when I try to create a view with the Rows property that is configured to use the feature, it returns only the first line:
sqlRules = new ArrayList();
queryStatement = server. QueryService.createStatement ("(DBSS_Instance)");
queryResult = server. QueryService.executeStatement (queryStatement);
for (it in queryResult.topologyObjects)
{
sqlRule is functionHelper.createDataObject ("westjet_mark_dev:SQLInstanceRuleStatus", "none", "test");.
sqlRule.instance = it;
sqlRule.ruleName = 'test rule name';
sqlRule.status = false;
sqlRules.add (sqlRule);
}
Return sqlRules;
Did I miss something?
Thank you
Mark
Mark,
I think I forgot something
sqlRule=functionHelper.createDataObject("westjet_mark_dev:SQLInstanceRuleStatus","none","test");
you create the test id
change your line of
sqlRule=functionHelper.createDataObject("westjet_mark_dev:SQLInstanceRuleStatus","none",null);
This should allow the creation of a single object in your loop for
-
run the Idoc function in the data file returned by the service of GET_FILE
Hello
I'm new to this forum, so thank you in advance for any help and forgive me of any error with the post.
I'm trying to force the execution of a custom Idoc function in a data file Complutense University of MADRID, when this data file is requested from the University Complutense of MADRID through service GET_FILE.
The custom Idoc function is implemented as a filter of the computeFunction type. One of the datafile has appealed to my custom Idoc function:
* < name wcm:element = "MainText" > [! - $myIdocFunction ()-] < / wcm:element > *.
The data file is then downloaded with CRMI via service GET_FILE, but the Idoc function is not called.
I tried to implement another filter Idoc type sendDataForServerResponse or sendDataForServerResponseBytes, that store objects cached responseString and responseBytes, personalized in order to look for any call to my function in the response object Idoc, eventually run the Idoc function and replace the output of the Idoc in the response. But this kind of filter will never run.
The Idoc function myIdocFunction is executed correctly when I use WCM_PLACEHOLDER service to get a RegionTemplate (file .hcsp) associated with the data file. In this case, the fact RegionTemplate refers to the element of "MainText" data file with <!-$wcmElement ("MainText")->. But I need to make it work also with service GET_FILE.
I use version 11.1.1.3.0 UCM.
Any suggestion?
Thank you very much
FrancescoHello
Thank you very much for your help and sorry for this late reply.
Your trick to activate the complete detailed follow-up was helpful, because I found out I could somehow use the filter prepareForFileResponse for my purpose and I could also have related to the implementation of the native filter pdfwatermark. PdfwFileFilter .
I managed to set up a filter whose purpose is to force the Idoc assessment of a predefined list of functions Idoc on the output returned by the service GET_FILE. Then I paste the code I have written, in which case it may be useful for other people. In any case, know that this filter can cause performance problems, which must be considered carefully in your own use cases.
First set the filter in the set of filters in file .hda from your device:
Filters @ResultSet
4
type
location
parameter
loadOrder
prepareForFileResponse
mysamplecomponent. ForceIdocEvaluationFilter
null
1
@end
Here is a simplified version of the implementation of the filter:
/ public class ForceIdocEvaluationFilter implements FilterImplementor {}
public int doFilter (workspace ws, linking DataBinder, ExecutionContext ctx) survey DataException, ServiceException {}
Service string = binder.getLocal ("IdcService");
String dDocName = binder.getLocal ("dDocName");
Boolean isInternalCall = Boolean.parseBoolean (binder.getLocal ("isInternalCall"));
If ((ctx instanceof FileService) & service.equals ("GET_FILE") &! isInternalCall) {}
FileService fileService = ctx (FileService);
checkToForceIdocEvaluation (dDocName, fileService);
}
continue with other filters
Back to CONTINUE;
}
' Private Sub checkToForceIdocEvaluation (String dDocName, FileService fileService) throws DataException, ServiceException {}
PrimaryFile file = IOUtils.getContentPrimaryFile (dDocName);
Ext = FileUtils.getExtension (primaryFile.getPath ());
If (ext.equalsIgnoreCase ("xml")) {}
forceIdocEvaluation (primaryFile, fileService);
}
}
forceIdocEvaluation Private Sub (file primaryFile FileService fileService) throws ServiceException {}
String multiplesContent = IOUtils.readStringFromFile (primaryFile);
Replacement ForceIdocEvaluationPatternReplacer = new ForceIdocEvaluationPatternReplacer (fileService);
String replacedContent = replacer.replace (fileContent);
If (replacer.isMatchFound ()) {}
setNewOutputOfService (fileService, replacedContent);
}
}
' Private Sub setNewOutputOfService (FileService fileService, String newOutput) throws ServiceException {}
File newOutputFile = IOUtils.createTemporaryFile ("xml");
IOUtils.saveFile (newOutput, newOutputFile);
fileService.setFile (newOutputFile.getPath ());
}
}
public class IOUtils {}
public static getContentPrimaryFile (String dDocName) survey DataException, ServiceException {queue
DataBinder serviceBinder = new DataBinder();
serviceBinder.m_isExternalRequest = false;
serviceBinder.putLocal ("IdcService", "GET_FILE");
serviceBinder.putLocal ("dDocName", dDocName);
serviceBinder.putLocal ("RevisionSelectionMethod", "Latest");
serviceBinder.putLocal ("isInternalCall", "true");
ServiceUtils.executeService (serviceBinder);
String vaultFileName = DirectoryLocator.computeVaultFileName (serviceBinder);
String vaultFilePath = DirectoryLocator.computeVaultPath (vaultFileName, serviceBinder);
return new File (vaultFilePath);
}
public static String readStringFromFile (File sourceFile) throws ServiceException {}
try {}
return FileUtils.loadFile (sourceFile.getPath (), null, new String [] {"UTF - 8"});
} catch (IOException e) {}
throw new ServiceException (e);
}
}
Public Shared Sub saveFile (String source, destination of the file) throws ServiceException {}
FileUtils.writeFile (source, destination, "UTF - 8", 0, "is not save file" + destination);
}
public static getTemporaryFilesDir() leader throws ServiceException {}
String idcDir = SharedObjects.getEnvironmentValue ("IntradocDir");
String tmpDir = idcDir + "custom/MySampleComponent";
FileUtils.checkOrCreateDirectory (tmpDir, 1);
return new File (tmpDir);
}
public static createTemporaryFile (String fileExtension) leader throws ServiceException {}
try {}
The file TmpFile = File.createTempFile ("tmp", "." + fileExtension, IOUtils.getTemporaryFilesDir ());
tmpFile.deleteOnExit ();
return tmpFile;
} catch (IOException e) {}
throw new ServiceException (e);
}
}
}
Public MustInherit class PatternReplacer {}
Private boolean matchFound = false;
public string replace (CharSequence sourceString) throws ServiceException {}
Matcher m = expand () .matcher (sourceString);
StringBuffer sb = new StringBuffer (sourceString.length ());
matchFound = false;
While (m.find ()) {}
matchFound = true;
String matchedText = m.group (0);
String replacement = doReplace (matchedText);
m.appendReplacement (sb, Matcher.quoteReplacement (replacement));
}
m.appendTail (sb);
Return sb.toString ();
}
protected abstract String doReplace(String textToReplace) throws ServiceException;
public abstract Pattern getPattern() throws ServiceException;
public boolean isMatchFound() {}
Return matchFound;
}
}
SerializableAttribute public class ForceIdocEvaluationPatternReplacer extends PatternReplacer {}
private ExecutionContext ctx;
idocPattern private model;
public ForceIdocEvaluationPatternReplacer (ExecutionContext ctx) {}
This.ctx = ctx;
}
@Override
public getPattern() model throws ServiceException {}
If (idocPattern == null) {}
List of the
functions = SharedObjects.getEnvValueAsList ("forceidocevaluation.functionlist"); idocPattern = IdocUtils.createIdocPattern (functions);
}
Return idocPattern;
}
@Override
protected String doReplace(String idocFunction) throws ServiceException {}
Return IdocUtils.executeIdocFunction (ctx, idocFunction);
}
}
public class IdocUtils {}
public static String executeIdocFunction (ExecutionContext ctx, String idocFunction) throws ServiceException {}
idocFunction = convertIdocStyle (idocFunction, IdocStyle.ANGULAR_BRACKETS);
PageMerger activeMerger = (PageMerger) ctx.getCachedObject("PageMerger");
try {}
String output = activeMerger.evaluateScript (idocFunction);
return output;
} catch (Exception e) {}
throw the new ServiceException ("cannot run the Idoc function" + idocFunction, e);
}
}
public enum IdocStyle {}
ANGULAR_BRACKETS,
SQUARE_BRACKETS
}
public static String convertIdocStyle (String idocFunction, IdocStyle destinationStyle) {}
String result = null;
Switch (destinationStyle) {}
case ANGULAR_BRACKETS:
result = idocFunction.replace ("[!-$","<$").replace("--]", "$="">" "]");
break;
case SQUARE_BRACKETS:
result = idocFunction.replace ("<$", "[!--$").replace("$="">", "-] '");
break;
}
return the result;
}
public static model createIdocPattern (
list idocFunctions) throws ServiceException {} $",>$").replace("--]",>If (idocFunctions.isEmpty ()) throw new ServiceException ("list of Idoc functions to create a template for is empty");
StringBuffer patternBuffer = new StringBuffer();
model prefix
patternBuffer.append ("(\\ [\\!--|)")<>
Features GOLD - ed list
for (int i = 0; i)
patternBuffer.append (idocFunctions.get (i));
If (i
}
model suffix
patternBuffer.append ("") (. +?) (--\\]|\\$>)");
String pattern = patternBuffer.toString ();
log.trace ("Functions return Idoc model", model);
Return Pattern.compile (pattern);
}
}
public class ServiceUtils {}
Private Shared Workspace getSystemWorkspace()}
Workspace workspace = null;
WsProvider provider = Providers.getProvider ("SystemDatabase");
If (null! = wsProvider) {}
workspace = wsProvider.getProvider ((workspace));
}
Returns the workspace;
}
getFullUserData private static UserData (String userName, cxt ExecutionContext, workspace ws) throws DataException, ServiceException {}
If (null == ws) {}
WS = getSystemWorkspace();
}
UserData userData is UserStorage.retrieveUserDatabaseProfileDataFull (name of user, ws, null, cxt, true, true);.
ws.releaseConnection ();
return userData;
}
public static executeService (DataBinder binder) Sub survey DataException, ServiceException {}
get a connection to the database
Workspace workspace = getSystemWorkspace();
Look for a value of IdcService
String cmd = binder.getLocal ("IdcService");
If (null == cmd) {}
throw new DataException("!csIdcServiceMissing");
}
get the service definition
ServiceData serviceData = ServiceManager.getFullService (cmd);
If (null == serviceData) {}
throw new DataException (LocaleUtils.encodeMessage ("!")) csNoServiceDefined", null, cmd));
}
create the object for this service
The service = ServiceManager.createService (serviceData.m_classID, workspace, null, Binder, serviceData);
String userName = 'sysadmin ';
UserData fullUserData = getFullUserData (username, service, workspace);
service.setUserData (fullUserData);
Binder.m_environment.put ("REMOTE_USER", username);
try {}
init service do not return HTML
service.setSendFlags (true, true);
create the ServiceHandlers and producers
service.initDelegatedObjects ();
do a safety check
service.globalSecurityCheck ();
prepare for service
service.preActions ();
run the service
service.doActions ();
} catch (ServiceException e) {}
} {Finally
service.cleanUp (true);
If (null! = workspace) {}
workspace.releaseConnection ();
}
}
}
}
-
pipeline function and type inside the package
Hi all
I'm sorry for the inconvenience, I tried to google my question before asking here...
The question is:
I can't compile type in the same package as my function in the pipeline?
I have an example of a function in the package, everything works fine.
SELECT using function statement:CREATE OR REPLACE PACKAGE ZOO.pkg_cl_risk_eval AS FUNCTION sample (p_date date, p_indicatorid number, p_ismodel number) return cl_risk_act pipelined; END; / CREATE OR REPLACE PACKAGE BODY pkg_cl_risk_eval is FUNCTION sample (p_date date, p_indicatorid number, p_ismodel number) return cl_risk_act pipelined IS v_obj cl_risk_type := cl_risk_type(NULL,NULL,NULL,NULL); BEGIN FOR e IN ( select trunc(sysdate) as adate, 0 as cid, 0 as indicatorid, case when p_ismodel = 0 then 0 else 1 end as value from dual ) LOOP v_obj.adate := e.adate; v_obj.cid := e.cid; v_obj.indicatorid := e.indicatorid; v_obj.value := e.value; PIPE ROW (v_obj); END LOOP; RETURN; end; end; /
I can't compile type in the same package as my function in the pipeline?select * from table(zoo.pkg_cl_risk_eval.sample(date '2011-09-30',4, 0))
Currently, it is outside the package:
As far as I can read from this source, it is impossible, but this information can be updated.DROP TYPE cl_risk_type FORCE; CREATE OR REPLACE TYPE cl_risk_type AS OBJECT ( adate date, cid number(10), indicatorid number(5), value number(5) ) / CREATE OR REPLACE TYPE cl_risk_act AS TABLE OF cl_risk_type /
http://asktom.Oracle.com/pls/Apex/f?p=100:11:0:P11_QUESTION_ID:4447489221109
Oracle version: 11g
UPD:
I'm sorry, I'm not paying attention... It is possible as noted in the response to my similar question:
function in pipeline work in the package? (Oracle 11g)
Published by: marco on December 15, 2011 07:40As the following State messages, my post was wrong. I withdraw without reservation.
Published by: APC on December 15, 2011 15:30
-
catch the collection returned by the function in a SQL statement
I have a select like query: (I need all the values returned by the function in the select list)
Select t1.col1, t2.col2, (by selecting t.a, t.b., t.c in fn (t2.col3) t)
Of
T1, t2
where t1.col1 = t2.col2;
My function is like:
FN (T2.col3) returns an array in format of the object
Here, I was able to select only one value from the table returned by the funcation both. If I select all of the values as above, she gave too much error vales.
Please someone help me in thisuser13044793 wrote:
I have a select like query: (I need all the values returned by the function in the select list)Select t1.col1, t2.col2, (by selecting t.a, t.b., t.c in fn (t2.col3) t)
Of
T1, t2
where t1.col1 = t2.col2;No specific reason for this? It adds additional complexity to the projection of SQL, and there are additional costs of failover for the motor of PL/SQL (per line) of context. Overall - not your typical approach and one that should have sound justification.
With regard to the basic method - the SQL multiset() function should be used to create a collection. Here is an example of the approach:
SQL> create or replace type TFoo as object( 2 id number, 3 bar varchar2(5) 4 ); 5 / Type created. SQL> SQL> create or replace type TFooSet as table of TFoo; 2 / Type created. SQL> SQL> create or replace function GetSomeFoo( n number ) return TFooSet is 2 foo TFooSet; 3 begin 4 foo := new TFooSet(); 5 foo.Extend( 5 ); 6 7 for i in 1..5 8 loop 9 foo(i) := new TFoo( n+i-1, to_char(i-1,'0000') ); 10 end loop; 11 12 return( foo ); 13 end; 14 / Function created. SQL> SQL> select 2 object_id, 3 object_name, 4 cast( 5 multiset( select * from table(GetSomeFoo(object_id)) ) as TFooSet 6 ) as FOO 7 from all_objects 8 where owner = 'SYS' 9 and rownum <= 5; OBJECT_ID OBJECT_NAME FOO(ID, BAR) ---------- ------------------------------ -------------------------------------------------- 27538 /1000e8d1_LinkedHashMapValueIt TFOOSET(TFOO(27538, ' 0000'), TFOO(27539, ' 0001') , TFOO(27540, ' 0002'), TFOO(27541, ' 0003'), TFOO (27542, ' 0004')) 28544 /1005bd30_LnkdConstant TFOOSET(TFOO(28544, ' 0000'), TFOO(28545, ' 0001') , TFOO(28546, ' 0002'), TFOO(28547, ' 0003'), TFOO (28548, ' 0004')) 11718 /10076b23_OraCustomDatumClosur TFOOSET(TFOO(11718, ' 0000'), TFOO(11719, ' 0001') , TFOO(11720, ' 0002'), TFOO(11721, ' 0003'), TFOO (11722, ' 0004')) 30094 /100c1606_StandardMidiFileRead TFOOSET(TFOO(30094, ' 0000'), TFOO(30095, ' 0001') , TFOO(30096, ' 0002'), TFOO(30097, ' 0003'), TFOO (30098, ' 0004')) 684122 /1023e902_OraCharsetUTFE TFOOSET(TFOO(684122, ' 0000'), TFOO(684123, ' 0001 '), TFOO(684124, ' 0002'), TFOO(684125, ' 0003'), TFOO(684126, ' 0004')) SQL> SQL> with dataset as( 2 select 3 object_id, 4 object_name, 5 cast( 6 multiset( select * from table(GetSomeFoo(object_id)) ) as TFooSet 7 ) as FOO 8 from all_objects 9 where owner = 'SYS' 10 and rownum <= 5 11 ) 12 select 13 d.object_id, 14 d.object_name, 15 f.id, 16 f.bar 17 from dataset d, 18 table(d.foo) f 19 / OBJECT_ID OBJECT_NAME ID BAR ---------- ------------------------------ ---------- --------------- 217 DUAL 217 0000 217 DUAL 218 0001 217 DUAL 219 0002 217 DUAL 220 0003 217 DUAL 221 0004 268 SYSTEM_PRIVILEGE_MAP 268 0000 268 SYSTEM_PRIVILEGE_MAP 269 0001 268 SYSTEM_PRIVILEGE_MAP 270 0002 268 SYSTEM_PRIVILEGE_MAP 271 0003 268 SYSTEM_PRIVILEGE_MAP 272 0004 271 TABLE_PRIVILEGE_MAP 271 0000 271 TABLE_PRIVILEGE_MAP 272 0001 271 TABLE_PRIVILEGE_MAP 273 0002 271 TABLE_PRIVILEGE_MAP 274 0003 271 TABLE_PRIVILEGE_MAP 275 0004 274 STMT_AUDIT_OPTION_MAP 274 0000 274 STMT_AUDIT_OPTION_MAP 275 0001 274 STMT_AUDIT_OPTION_MAP 276 0002 274 STMT_AUDIT_OPTION_MAP 277 0003 274 STMT_AUDIT_OPTION_MAP 278 0004 815 RE$NV_LIST 815 0000 815 RE$NV_LIST 816 0001 815 RE$NV_LIST 817 0002 815 RE$NV_LIST 818 0003 815 RE$NV_LIST 819 0004 25 rows selected. SQL>
-
Dial the stored function return array
Hi all
I have a function as follows:
create or replace TYPE string_table IS the TABLE OF VARCHAR2 (2000);
create or replace TYPE ARRAYTYPE is VARRAY (20) OF VARCHAR2 (30);
create or replace FUNCTION getEmpArray (s varchar2, varchar2, st string_table t) RETURN ARRAYTYPE AS
ARRAYTYPE l_data: = ARRAYTYPE();
BEGIN
l_data.extend; l_data (l_data. (Count): = s; l_data.extend; l_data (l_data. (Count): = t; l_data.extend; l_data (l_data. (Count): = St (1); L_data RETURN;
END;
I want to call this function from StoredFunctionCall
Code:
Fun StoredFunctionCall = new StoredFunctionCall();
fun.setProcedureName ("getEmpArray".toUpperCase ());
Object [] arr = new Object() {"aa", "Valentine", "bbb"};
ArrayDescriptor = arrDescriptor
ArrayDescriptor.createDescriptor ("string_table".toUpperCase (),
connection);
ARRAY arrayToPass = new ARRAY (arrDescriptor, arr);
fun.addUnamedArgumentValue ("a");
fun.addUnamedArgumentValue ("b");
fun.addUnamedArgumentValue (arrayToPass);
fun.setResult ("FUNCTION_RESULT"); to get result by this name
List of vector < DatabaseRecord > = session.executeSelectingCall (fun);
But the Exception
PLS-00382: expression is of the wrong type
ORA-06550: line 1, column 7:
PL/SQL: Statement ignored
Error code: 6550
Call: START? : = GETEMPARRAY (?,?,?); END;
link = > [= > FUNCTION_RESULT, a, b, oracle.sql.ARRAY@21fbc01]
Please help me
Published by: fbg on 26/04/2010 21:52A few questions,
1 JDBC does not support the type of TABLE PLSQL, you must use a type VARRAY, or wrap the TABLE function call in a function that takes a VARRAY.
TopLink also has support for PLSQL types in his PLSQLStoredProcedureCall class, but no support is currently available for StoredFunctions.
You can pass the VARRAY type for the argument of the TABLE.2. your function returns a VARRAY, so you must set the type in the result of StoredFunctionCall.
We are currently the API to set a table for the result type, so you must directly access first parameter of the call or use a StoredProcedureCall (and convert your function of a procedure).You can also investigate a cursor of returning from a procedure stored instead of the varray.
You can also directly access the JDBC connection and make the call using JDBC code.
Feel free to connect these issues EclipseLink.
---
James: www.eclipselink.org
Maybe you are looking for
-
Reinstall Windows 7 Edition Home Premium x 64 on Satellite R850
I made the recovery disc (5 DVDs). My question: should I reinstall the operating system recovery disc or can I install the trial Windows 7 Home Premium and activated with my serial number?
-
No restore point on the computer and unable to create restore points
original title: restore point I don't have and can't seem to create a restore point on my computer... Why?
-
control of the volume on the keyboard keys do not work with usb dac
o/s ultimate win7, ms wired keyboard 600, usb dac. I finally got the volume bar work, he reacts to the keys flight + /, but the volume remains the same. the only way I can change the volume is with my mouse in the window of Mixer volume, which is ver
-
How can I print more than 1 PDF at a time?
I have several PDF files that I need to print. Open each and then print takes time. Is there a way to 'batch' impression?
-
Where is the iPhoto library import addon
I'm trying to import my iPhoto library in Lightroom 5.7. I can't locate the plugin that was supposed to be released in October last to facilitate this. Adobe research lead to no results.