Collections as function/procedure parameters

Dear Oracle Gurus,
In Oracle documentation i have read that we can use a collection
as a parameter in a function or procedure.
I created a packaged procedure called collection_test with
single parameter whose type is nested table.
Bu when i call that packaged procedure from another stand alone procedure
it is giving error.
I ahve given the scripts below.
create or replace package test as
type emp_names is table of emp.ename%type;
procedure collection_test(names in emp_names) ;
end;
create or replace package body test
as
procedure collection_test(names in emp_names)
as
begin
for i in names.first.. names.last
loop
dbms_output.put_line('employee name'||names(i));
end loop;
end;
end test;
create or replace procedure test_proc
as
type emp_names is table of varchar2(10);
enames emp_names;
begin
select ename bulk collect into enames from emp;
test.collection_test(enames);
end test_proc;
8/2 PLS-00306: wrong number or types of arguments in call to
'COLLECTION_TEST'
any suggestions r most welcome
regads
RR

SQL> create or replace package test as
  2  type emp_names is table of emp.ename%type;
  3  procedure collection_test(names in emp_names) ;
  4  end;
  5  /
Package created.
SQL> create or replace package body test
  2  as
  3  procedure collection_test(names in emp_names)
  4  as
  5  begin
  6  for i in names.first.. names.last
  7  loop
  8  dbms_output.put_line('employee name'||names(i));
  9  end loop;
10  end;
11  end test;
12  /
Package body created.
SQL> create or replace procedure test_proc
  2  as
  3  enames test.emp_names; -- Changed the declaration of enames
  4  begin
  5  select ename bulk collect into enames from emp;
  6  test.collection_test(enames);
  7  end test_proc;
  8  /
Procedure created.
SQL> set serveroutput on
SQL> exec test_proc
employee nameSMITH
employee nameALLEN
employee nameWARD
employee nameJONES
employee nameMARTIN
employee nameBLAKE
employee nameCLARK
employee nameSCOTT
employee nameKING
employee nameTURNER
employee nameADAMS
employee nameJAMES
employee nameFORD
employee nameMILLER
PL/SQL procedure successfully completed.
SQL>

Similar Messages

  • ORA-30626: function/procedure parameters of remote object types not support

    Hello,
    I am trying to create a dynamic LOV.
    I have a table and package in a remote database, I am connecting to the database using dblink. When I access package I am getting error
    ORA-30626: function/procedure parameters of remote object types are not supported
    However I can access table with [email protected], not the package!
    How can I solve this problem?

    Did you ever get an answer/workaround to this? I'm having similar problems in 10g.

  • Unused stored procedure parameters marked with a check mark in crystal reports

    Post Author: epowers0213
    CA Forum: General
    Hello,
    I have some Crystal Reports that currently use stored procedures as their datasources (I am in the process of modifying them to use datasets instead).  Some of the original reports have check marks next to stored procedure parameters which I cannot find as being used anywhere in the report.  Is this a legitimate possibility? (Some of them do not have check marks, however, so it is not consistent.)
    More Info:  I am using Crystal Reports within Visual Studio 2005.  I have looked through each report in every way I can think of to find if a parameter field is being used anywhere - I have checked all formula fields, the formatting formulas for sections and individual fields, the record and group selection formulas and the grouping and sorting experts, along with any subreports (although some of them have no subreports).
    (I have read on other forums that exporting a report definition file is another way to look for where fields or parameters are being used, but this does not appear possible within Visual Studio 2005.)
    In some cases, I have gone ahead and replaced the stored procedure datasource location with a dataset (generated based on the same stored procedure).  When I do this, Crystal automatically deletes the stored procedure parameters from the report, and I have still been able to run the modified report successfully - at least it looks ok and nothing is complaining.  So is it possible that these parameters were actually not being used anywhere on the report although they were marked with a check mark?
    Any help would be greatly appreciated!  I want to make sure I am not changing the function of these reports somehow without knowing it...
    Thank you!

    Are you referencing another database that Crystal can't see? Also, you can try and copy the SQL to a command object in Crystal to see if it behaves differently there.

  • Diff between function,procedure/packages  and Diff bet delete,truncate,drop

    Dear all
    I am your pal ranga from IT capital bangalore india. I would like have detail discussion with respect to subject. Pls discuss
    Thanks and Regards
    B.Rangarajan

    Justin gave good advise but here is the short version of the answer just for the heck of it
    Function => stored code suitable for use in the select list of a query and in the where clause conditions that generally accepts one parameter and returns one value. Allows user to extend list of Oracle provided row queries.
    Procedure => stored code designed to return one or more values to the caller. Procedures are generally called from other stored code routines or directly from the user application and not as part of a query or DML statement.
    Package => a collection of stored procedures and functions
    Delete => DML row operation to remove rows from a table
    Truncate => DDL operation to quicky and with minimum overhead mark a table and its associated indexes as empty
    Drop => DDL operation to remove a table or other object from the database
    Maybe these definitions will help until you cover the reading. You can also learn this from the Concepts manual. If you are a DBA this manual is where you should start. For a Developer I would start with the Application Developers - Fundamentals.
    HTH -- Mark D Powell --

  • Is It Possible To define a size of the Procedure Parametere?

    In Oracle Is It Possible To define a size of the Procedure Parametere?
    If i have the procedure like
    Test_sp(no int,name varchar2)
    Is it possible to define a size
    Test_sp(no int(5),name varchar2(255))
    Thanks
    Rangan S

    As Anthony said - no, not in the parameter signature of a procedure or a function. Which could have unexpected run-time errors as one could wrongly assume that using a "derived" type will allow this.
    The following example illustrates:
    SQL> create table datatype(
    2 varchar2_5 varchar2(5),
    3 number1 number(1)
    4 );
    Table created.
    SQL>
    SQL>
    SQL> create or replace procedure fooProc( s datatype.varchar2_5%TYPE, n datatype.number1%TYPE ) is
    2 s1 datatype.varchar2_5%TYPE;
    3 n1 datatype.number1%TYPE;
    4 begin
    5 begin
    6 DBMS_OUTPUT.put_line( 'len='||length(s)||' value='||s );
    7 DBMS_OUTPUT.put_line( 'value='||to_char(n) );
    8 exception when OTHERS then
    9 DBMS_OUTPUT.put_line( 'parameter display failed with error '||SQLERRM(SQLCODE) );
    10 end;
    11
    12 begin
    13 s1 := s;
    14 DBMS_OUTPUT.put_line( 'string parameter assignment succeeded' );
    15 exception when OTHERS then
    16 DBMS_OUTPUT.put_line( 'string assignment failed with error '||SQLERRM(SQLCODE) );
    17 end;
    18
    19 begin
    20 n1 := n;
    21 DBMS_OUTPUT.put_line( 'number parameter assignment succeeded' );
    22 exception when OTHERS then
    23 DBMS_OUTPUT.put_line( 'number assighment failed with error '||SQLERRM(SQLCODE) );
    24 end;
    25 end;
    26 /
    Procedure created.
    SQL>
    SQL> exec fooProc( 'test1', 1 );
    len=5 value=test1
    value=1
    string parameter assignment succeeded
    number parameter assignment succeeded
    PL/SQL procedure successfully completed.
    SQL>
    SQL> exec fooProc( 'this should fail', 1 );
    len=16 value=this should fail
    value=1
    string assignment failed with error ORA-06502: PL/SQL: numeric or value error: character string buffer too small
    number parameter assignment succeeded
    PL/SQL procedure successfully completed.
    SQL>
    SQL> exec fooProc( 'test', 1234 );
    len=4 value=test
    value=1234
    string parameter assignment succeeded
    number parameter assignment succeeded
    PL/SQL procedure successfully completed.
    SQL>
    Note that only the string assignment fails. The string parameter works fine. And there is no impact at all on the number side, despite seemingly constraining it to a single digit.

  • Executing a oracle function with parameters ...

    Hi All,
    I'm trying to execute this part of the code:
    <cfdirectory action="list"
    directory="#getDirectoryFromPath(sharedPath)#"
    name="currentDir">
    <cfoutput query="currentDir">
    <cfset filename = sharedPath & name>
    <cfif find(".csv",name)>
    <cfexecute name = "#Application.c_script_dropfileupload_path#main_dropfileupload.sh"
    arguments = """#name#"" ""#sharedPath#"""
    variable = "Variables.upload_progress"
    timeout = "500">
    </cfexecute>
    <tr>
    <td colspan="3" class="text">
    <cfquery name="getvalcount"
    datasource="#Application.c_dsn#"
    dbtype="ODBC"
    password="#Session.Password#"
    username="#Session.UserID#">
    SELECT pk_cpv_drop_file_upload.sf_drop_validate_and_count(replace(#name#,".csv","")) FROM dual
    </cfquery>
    <cfoutput> #getvalcount.sf_drop_validate_and_count# </cfoutput>
    </td>
    </tr>
    but I'm receiving the error from oracle telling: illegal zero-length identifier
    My question is...
    IS there a way to pass the parameter #name# to this function sf_drop_validate_and_count ? or should I work with parameters to a stored procedure?
    Thanks in advance
    Regards
    Alex

    Hi ALL,
    Just to inform you that I've found a solution when you need to apply variables as a parameter:
    preserveSingleQuotes(vFileName)
    preserveSingleQuotes function will keep the string like this 'dadsadsad' and so, you can use it inside your functions, procedures, etc..
    Thanks for all the reponses I've received.
    Best regards
    Alex

  • Problem in  using function module parameters in abap program

    i want to use the coding present in on one of the function module 'AS_API_INFOSTRUC_FIND'  i got the problem using the function module parameters in my abap program.
    these are the parameters inside fm
    ""Lokale Schnittstelle:
    *"       IMPORTING
    *"             VALUE(I_FIELDCAT) TYPE  AIND_FCAT
    *"             VALUE(I_FIELDS) TYPE  TABLE OPTIONAL
    *"             VALUE(I_OBLIGATORY_FIELDS) TYPE  TABLE OPTIONAL
    *"       EXPORTING
    *"             VALUE(E_INFOSTRUC) TYPE  AIND_DESC
    *"             REFERENCE(E_ALL_FIELDS) TYPE  TABLE
    *"             REFERENCE(E_MATCHING_FIELDS) TYPE  TABLE
    *"       EXCEPTIONS
    *"              NO_INFOSTRUC_FOUND
    i want to declare     E_ALL_FIELDS  parameter    in my abap program,
    i have declared as 
    data: E_ALL_FIELDS TYPE TABLE.
    but   the system throws error that
    'type of field 'TABLE'  is generic .no table line has been specified'.
    i want to use it in my abap program how can i declare in my abap program .

    You have to declare the table using any specific type.
    The type table in the FM is generic so you can pass any type you need.
    For instance:
    TYPES: BEGIN OF ty_fields,
             fieldname LIKE dfies-fieldname,
           END OF ty_fields,
    TYPES: TY_T_GLU1              LIKE GLU1                     OCCURS 0,
           ty_t_fields            type ty_fields                occurs 0.
      DATA: lt_info_struct_fields TYPE ty_t_fields WITH HEADER LINE,
            lt_matching_fields    TYPE ty_t_fields WITH HEADER LINE.
        CALL FUNCTION 'AS_API_INFOSTRUC_FIND'
             EXPORTING
                  i_fieldcat         = ft_fieldcat-fieldcat
                  i_fields           = ft_fields_filled[]
             IMPORTING
                  e_infostruc        = lv_info_struct_name
                  e_all_fields       = lt_info_struct_fields[]
                  e_matching_fields  = lt_matching_fields[]
             EXCEPTIONS
                  no_infostruc_found = 1.

  • How can I compile all functions, procedures and packages with a script?

    I need to compile all functions, procedures and packages of 5 schemas (users) with a script.
    How can I do it?
    Thanks!

    you can create a script to select all invalid objects in those schemas Since Oracle 8 introduced NDS this approach has struck me as a trifle old fashioned. It's much simpler to loop round the query in PL/SQL and use EXECUTE IMMEDIATE to fire off the DDL statements. No scripts, no muss, no fuss.
    Having said that, the problem with this approach and also with using DBMS_UTILITY.COMPILE_SCHEMA is that they do not compile all the invalid objects in dependency order. This may result in programs being invalidated by the subsequent compilation of dependencies. This is due to the introduction of Java into the database.
    The UTLRP script is much better, because it (usually) avoids cyclic references. But you still may need to run it more than once.
    In general it is better to avoid sledgehammer recompilations (like DBMS_UTILITY.COMPILE_SCHEMA, which starts by invalidating all the objects). If we have twenty invalid objects, nineteen of which are dependencies of the twentieth, we actually only need to recompile the master object, as recompiling it will trigger the recompilation of all the others.
    Cheers, APC

  • Read item from Java class and call to stored function/procedure of database

    Hi,
    I am looking solution that I was trying to find becasue of I am not expert and novice of ADF so I am getting problem to do. I am trying migrating from oracle forms to JDeveloper[ADF].
    I want to call database stored function from JSF pages by java bean class of a button press event (manually created) and after button event I have called java class which I created manually. But I can not read that values what I given into jsp page.
    question1: How can I read jsp pages items value to java class ?
    question2: How can I call to database stored function/procedure with that parameter?
    question3: How can I use return value of that stored function/procedure ?
    Please reply me .
    Thanks,
    zakir
    ===
    Edited by: Zakir Hossain on Mar 29, 2009 10:22 AM

    ---

  • Use functions in parameters?

    Hi,
    is it possible to use functions in a parameter?
    We use a parameter for a field from an Oracle database - the values in this field are stored as "Employee ID - Employee Name"; however, we only would like to see the name, not the id in the parameter field list (and filter). We also have to apply the URLDecode function since we have special characters in the employee names.
    Thanks!

    Hi Dear,
                 Actually you can't directly apply function on Parameters but if u have restriction by the prameter
                 then you can apply formula in select expert on that pamaters...
    Regards
    Obaid

  • Private function / procedure to be used with in a package

    Hi All
    I wanted to find out how would the definition be for a function which is defined so as to be used/called by the other functions / procedures with in a particular pakage and should not be visible/accessible for any other routine out side the package in which it is defined..
    could you please advice me on this? Thanks!
    Sarat

    It is possible: you can nest one function/procedure in another:
    SQL>CREATE OR REPLACE FUNCTION sum_squares(
      2     p_a   IN   NUMBER,
      3     p_b   IN   NUMBER)
      4     RETURN NUMBER
      5  IS
      6     FUNCTION square(
      7        p_n   IN   NUMBER)
      8        RETURN NUMBER
      9     IS
    10     BEGIN
    11        RETURN p_n * p_n;
    12     END square;
    13  BEGIN
    14     RETURN square(p_a) + square(p_b);
    15  END sum_squares;
    16  /
    Function created.
    SQL>SELECT sum_squares(3, 4) FROM dual;
    SUM_SQUARES(3,4)
                  25Urs

  • Syntax for nested function/procedure?

    Hi,
    What's the syntax to create a sub function/procedure in another function/procedure? Is this available in 9i?
    Thanks.

    Nested functions and procedures have been available since at least 7.3. However, any nested functions or procedures need to be the last things in your declare section.
    This works:
    SQL> CREATE OR REPLACE PROCEDURE test_proc is
      2     l_v VARCHAR2(100);
      3     FUNCTION nested_function RETURN VARCHAR2 IS
      4     BEGIN
      5        RETURN('nested function call') ;
      6     END;
      7  BEGIN
      8     l_v := nested_function;
      9     DBMS_OUTPUT.Put_Line(l_v);
    10  END;
    11  /
    Procedure created.But this does not:
    SQL> CREATE OR REPLACE PROCEDURE test_proc is
      2
      3     FUNCTION nested_function RETURN VARCHAR2 IS
      4     BEGIN
      5        RETURN('nested function call') ;
      6     END;
      7     l_v VARCHAR2(100);
      8  BEGIN
      9     l_v := nested_function;
    10     DBMS_OUTPUT.Put_Line(l_v);
    11  END;
    12  /
    Warning: Procedure created with compilation errors.
    SQL> show err
    Errors for PROCEDURE TEST_PROC:
    LINE/COL ERROR
    7/4      PLS-00103: Encountered the symbol "L_V" when expecting one of the
             following:
    12/0     PLS-00103: Encountered the symbol "end-of-file" when expecting
             one of the following:
             begin function package pragma procedure formTTFN
    John

  • Type conflict in function module parameters

    Hi All,
    i hve to pass dynamic field <dyn_field> into function module parameters but  it's giving a dump for type conflict.
    where VALUE2  data type in 'AUTHORITY_CHECK' is UST12-VON but if i define <dyn_field> type UST12-VON . then it'll give dump in *ASSIGN COMPONENT  SECURITY_TABLE-FIELDNAME  of structure <wa> to <dyn_field> *.
    SECURITY_TABLE-FIELDNAME  data type is different with UST12-VON .
    pls guide me how to pass *<dyn_field> in fm parameters.
    FIELD-SYMBOLS: <dyn_field> type any.
      LOOP AT <DYN_TABLE_IN> INTO <WA>.
            ASSIGN COMPONENT  SECURITY_TABLE-FIELDNAME  of structure
                 <wa> to <dyn_field> .
            CALL FUNCTION 'AUTHORITY_CHECK'
              EXPORTING
                USER                = QUSER
                OBJECT              = SECURITY_TABLE-AUTHOBJCT
                FIELD1              = 'ACTVT'
                VALUE1              = '03'
                FIELD2              = SECURITY_TABLE-FIELDNAME
                VALUE2              = <dyn_field>

    Hi anuj ,,
    Can you explauin the solution ..
    Regards

  • How to launch a function/procedure without suspending the parent process?

    Hi everybody,
    I would like to know if I can define something as follows in PLSQL:
    procedure master
    begin
    call a procedure_child;
    End master;
    I would like that the procedure master does not suspend the execution and wait that the procedure_child finishes in order to resume the executions with the further code.
    Thanks a lot in advanced
    Tomeu

    In the future, please stick to posting in a single forum.
    Re: How to launch a function/procedure without suspending the parent process?

  • How to use functions/procedures like wwv_flow_sw_api

    Hello,
    I want to use functions/procedures like wwv_flow_sw_api.check_priv(:P4_SCHEMA) in a process, but I get the error "identifier wwv_flow_sw_api.check_priv(:P4_SCHEMA); must be declared".
    How can I access these functions?
    Thank you,
    Kirsten

    Hi Jari,
    my problem is, that I need to replicate the exact feature of Query Builder page in my
    application (see thread Re: How to create Query Builder page in application
    So I imported the page 1002 and tried to make it working.
    Do you know any solution?
    Than you,
    Kirsten

Maybe you are looking for

  • In MIRO system showing different vendor other thar PO

    Hi During Invoice booking in MIRO, system is showing different vendor other than the vendor in Purchase order. As a result different vendor other than PO vendor is getting credited. We have checked below settings. u2022 Partner roles in vendor master

  • I have an iPhone 4 and the iOS 4.3.5 download keeps failing - error states its corrupted.

    I have an iPhone 4 and the iOS 4.3.5 download keeps failing.  It downloads then I get a message stating that the download was corrupted and couldn't be installed.  I've tried it with bitdefender switched off.  I've tried it with it in airplane mode. 

  • SD sapmv45a

    Hi All, I m trying to activate this program after upgrading but i m getting and error message statement not accessible. I have updated navigation index as well as generated main program for the include but it still gives the same error. Please sugges

  • Installing Photoshop CS5 on another PC

    I have the CS5 Production Premium installed on my PC and I mostly use Photoshop, Premier, and After Effects. My question is can I install just Adobe Photoshop CS5 on my wife's PC so she can use it too? Is this a violation of the license agreement? Wi

  • How to sent information to sapinbox??

    Hi experts, How to send a report output  or any inforamtion as Workitem to any users SAP Inbox from abap program. I dont want any workflow workitem ,simple information to be transfered from ABAP program to any users inbox. please suggest with suitabl