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:

  • Locate the declared function

    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

  • The value returned by the function to load is not of type digital errors after migration to Coldfusion 11

    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 331

    Called 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: 1

    PL/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: 1

    PL/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
    Francesco

    Hello

    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 {}

    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.
    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;
    /
    SELECT using function statement:
    select * from table(zoo.pkg_cl_risk_eval.sample(date '2011-09-30',4, 0))
    I can't compile type in the same package as my function in the pipeline?
    Currently, it is outside the package:
    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
    / 
    As far as I can read from this source, it is impossible, but this information can be updated.
    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:40

    As 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 this

    user13044793 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:52

    A 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