Help passing procedure parameter

I created a pl/sql collection. Now i want to pass the whole collection into a procedure and then loop through the collection inside the procedure to find out if a particular attribute is existing in it.
I am not able to figure out how can I do that.Do i have to use a refcursor or something? please help. Its kind of urgent

> I created a pl/sql collection. Now i want to pass the
whole collection into a procedure and then loop
through the collection inside the procedure to find
out if a particular attribute is existing in it.
Why?
Two good reason not to do it like this come to mind.
Data is better and faster and easier and more performant to handle as Oracle data (aka data/rows in a table) - not as data inside a PL/SQL array. SQL allows you to sort, group by, filter, transform, analyse and so on. Oracle allows you to index and partition that data.
PL/SQL in comparison cannot do any of this.
The second reason is memory. It requires PGA (Process Global Area) to store data in PL/SQL. PGA is expensive as it is a dedicated resource. It can only service a single process. The SGA in turn (and its db buffer cache) services all Oracle sessions. So 1MB spend of system memory spend on the SGA has a lot more bite in the byte than 1MB spend on the PGA.
No, I'm not saying that these two reasons are absolutes and that PL/SQL collections/arrays are a bad thing. Simply that you need better reasons than these to justify throwing data into a collection and using a FOR LOOP to iterate through the data looking for something - especially when this is exactly what Oracle tables and Oracle SQL do brilliantly.
> Its kind of urgent
Arrgghh.. this is where I usually get on my soapbox and tell you that it is rude to assume that your problem is more urgent than other posters' problems here. And that it is arrogant to insist on that those (with paying jobs) provides answers and support here for free, give immediate attention to your problem.
So please, unless you like to see me foam at the mouth and wave my lead pipe in your general direction, do not claim that your problem is urgent when posting here (or any other similar forum for that matter).

Similar Messages

  • How to pass the parameter of a stored procedure to iReport

    Hi... i don't know how to pass the parameter of the stored procedure to the iReport.
    In the Report Query, i tried
    1. sp_storedprocedure ' value'
    2. sp_storedprocedure +''''+$P{parameter}+''''+
    3. sp_storedprocedure +$V+$P{parameter}++$F($F is a variable having a value of ' (a single quote))may you enlighten us please? thank you

    For M$ SQL server I find that it only works when U use the fully qualified name...
    e.g. catalod.dbo.my_procedure_name 'variable'
    My full query in the Report Query window is something like this:
    EXEC arc.dbo.jasper_Invoice 1000
    Note that you may find that selecting from VIEWS / TABLES fails for no apparent reason and iReport will prompt you with the usual very unhelpful (we have what we "pay" for) prompt, stating that "The document is empty".
    To work around this issue, where a statement like "SELECT * FROM arc.dbo.acc_invoices WHERE Invoice_id=1000" does not work, simply create a PROC, something like:
    CREATE PROC jasper_MyProc (@my_rec_id integer) AS
    SELECT * FROM arc.dbo.acc_invoices WHERE Invoice_id= @my_rec_id integer
    ...to wrap your SELECT statement, then call the PROC
    Edited by: Sylinsr on Apr 22, 2008 4:23 PM

  • How to Pass multiple parameter into single store procedure

    How to Pass multiple parameter into single store procedure
    like a one to many relationship.
    it is possible then reply me immediatly

    you mean like this .....
    CREATE OR REPLACE procedure display_me(in_param in varchar2,in_default in varchar2 := 'Default') is
    BEGIN
    DBMS_OUTPUT.put_line ('Values is .....'||in_param || '....'||in_default);
    END display_me;
    CREATE OR REPLACE procedure display_me_2 as
    cnt integer :=0;
    BEGIN
    For c1_rec In (SELECT empno,deptno FROM test_emp) Loop
         display_me(in_param => c1_rec.empno);
         cnt := cnt+1;
         end loop;
         DBMS_OUTPUT.put_line('Total record count is ....'||cnt);
    END display_me_2;
    SQL > exec display_me_2
    Values is .....9999....Default
    Values is .....4567....Default
    Values is .....2345....Default
    Values is .....7369....Default
    Values is .....7499....Default
    Values is .....7521....Default
    Values is .....7566....Default
    Values is .....7654....Default
    Values is .....7698....Default
    Values is .....7782....Default
    Values is .....7788....Default
    Values is .....7839....Default
    Values is .....7844....Default
    Values is .....7876....Default
    Values is .....7900....Default
    Values is .....7902....Default
    Values is .....7934....Default
    Values is .....1234....Default
    Total record count is ....18

  • How to assign Values to nested table and pass as parameter to procedure?

    How to assign Values to nested table and pass as parameter to procedure?
    Below is the Object and its type
    create or replace type test_object1 as object
    val1 varchar2(50),
    val2 varchar2(50),
         val3 varchar2(50)
    create or replace type test_type1 is table of test_object1;
    create or replace type test_object2 as object
    val1 varchar2(50),
    val2 varchar2(50),
         val3 varchar2(50)
    create or replace type test_type2 is table of test_object2;
    GRANT ALL ON test_object1 TO PUBLIC;
    GRANT ALL ON test_type1 TO PUBLIC;
    GRANT ALL ON test_object2 TO PUBLIC;
    GRANT ALL ON test_type2 TO PUBLIC;
    here is the table made of object type:
    create table test_object_tpe
    sl_num NUMBER,
    description VARCHAR2(100),
    main_val1 test_type1,
    main_val2 test_type2
    NESTED TABLE main_val1 STORE AS tot1
    NESTED TABLE main_val2 STORE AS tot2;
    here is the procedure which inserts values into nested table:
    PROCEDURE INSERT_TEST_DATA(sl_num IN NUMBER,
    description IN VARCHAR2,
    p_main_val1 IN test_type1,
    p_main_val2 IN test_type2
    IS
    BEGIN
    FOR rec in p_main_val1.first..p_main_val1.last
    LOOP
    INSERT INTO xxdl.test_object_tpe
    sl_num,
    description,
    main_val1,
    main_val2
    VALUES
    sl_num
    ,description
    ,test_type1 (test_object1(
    p_main_val1(rec).val1,
                                       p_main_val1(rec).val2,
    p_main_val1(rec).val3
    ,test_type2 (test_object2( p_main_val2(rec).val1,
                        p_main_val2(rec).val2,
                        p_main_val2(rec).val3
    END LOOP;
    commit;
    END INSERT_TEST_DATA;
    here is the anonymoys block which assigns values to the object type and pass values into the procedure:
    set serveroutput on;
    declare
    p_sl_num NUMBER := 1001;
    p_description VARCHAR2(50) := 'Testing Val1';
    inval1 test_type1 := test_type1();
    inval2 test_type2 := test_type2();
    begin
    inval1(1).val1 := 'testx1';
    inval1(1).val2 := 'testx2';
    inval1(1).val3 := 'testx3';
    inval2(1).val1 := 'testy1';
    inval2(1).val2 := 'testy2';
    inval2(1).val3 := 'testy3';
    CSI_PKG.INSERT_TEST_DATA(sl_num => p_sl_num,
    description => p_description,
    p_main_val1 => inval1,
    p_main_val2 => inval2
    end;
    Can anybody correct me.
    Thanks,
    Lavan

    Thanks for posting the DDL and sample code but whenever you post provide your 4 digit Oracle version (result of SELECT * FROM V$VERSION).
    >
    How to assign Values to nested table and pass as parameter to procedure?
    >
    Well you are doing almost everything wrong that could be done wrong.
    Here is code that works to insert data into your table (the procedure isn't even needed).
    declare
    p_sl_num NUMBER := 1001;
    p_description VARCHAR2(50) := 'Testing Val1';
    inval1 test_type1 := test_type1();
    inval2 test_type2 := test_type2();
    begin
    inval1.extend();
    inval1(1) := test_object1('testx1', 'testx2', 'testx3');
    inval2.extend();
    inval2(1) := test_object2('testy1', 'testy2', 'testy3');
    INSERT INTO test_object_tpe
    sl_num,
    description,
    main_val1,
    main_val2
    VALUES
    (p_sl_num, p_description, inval1, inval2);
    commit;
    end;
    /See Example 5-15 Referencing a Nested Table Element in Chap 5 Using PL/SQL Collections and Records in the PL/SQL doc
    http://docs.oracle.com/cd/B28359_01/appdev.111/b28370/collections.htm#CJABEBEA
    1. You don't even need the procedure since all it does is a simple INSERT into the table which you can do directly (see my code above)
    inval1(1).val1 := 'testx1';There is no element one (1) of 'inval1' since you haven't created any elements yet. You need to EXTEND the collection to add an element
    inval1.extend();And then there is an empty element but 'inval1' is a container for objects of type 'test_object1' not for scalars like 'val1', 'val2', and 'val3'.
    So you can't do
    inval1(1).val1 := 'testx1';You have to create an instance of 'test_object1'
    inval1(1) := test_object1('testx1', 'testx2', 'testx3');And so on for the other collection
    You don't need the procedure (as my sample code shows) but once you populate the variables properly it will work.

  • How to execute a procedure with collection passed as parameter?

    i have created the collection:
    CREATE TYPE typ_Project AS OBJECT( project_no NUMBER(2), title VARCHAR2(35), cost NUMBER(7,2))
    CREATE TYPE typ_ProjectList AS VARRAY (50) OF typ_Project
    and a procedure:
    CREATE OR REPLACE PROCEDURE add_project (
    p_deptno IN NUMBER,
    p_new_project IN typ_Project,
    p_position IN NUMBER )
    IS
    v_my_projects typ_ProjectList;
    BEGIN
    SELECT projects INTO v_my_projects FROM department
    WHERE dept_id = p_deptno FOR UPDATE OF projects;
    v_my_projects.EXTEND;
    FOR i IN REVERSE p_position..v_my_projects.LAST - 1 LOOP
    v_my_projects(i + 1) := v_my_projects(i);
    END LOOP;
    v_my_projects(p_position) := p_new_project; -- add new
    UPDATE department SET projects = v_my_projects
    WHERE dept_id = p_deptno;
    END add_project;
    Now please explain how to call this procedure with collection passed as parameter . . .

    For example:
    BEGIN
        add_project(
                    10, -- department number
                    typ_Project(
                                99, -- project number
                                'New Project', -- project title
                                99999.99 -- project cost
                               ), -- new project
                    5 -- project position
    END;
    /SY.

  • Passing a Parameter to the Procedure and changing it in the Procedure

    Hi all,
    I am trying to pass a parameter to a procedure like this.
    PROCEDURE FLASH_PHY
    (date_begin IN DATE, date_end IN DATE)
    IS
    I am trying to do SELECT and INSERT based on the date range passed in the procedure as mentioned above. And I am trying to do something like this.
    SELECT NVL(sum(charges),0),count(summary_balances_id)
    INTO lnu_charges_6months,c_summary
    FROM SUMMARY_BALANCES
    WHERE period_begin BETWEEN ADD_MONTHS((date_begin), -6) -- AND ADD_MONTHS((date_end), -1);
    UPDATE summary_balances
    SET cummulative_charges_6mo = lnu_charges_6months;
    how should I do this parameter change. Right now if I use this select statement than it does not return anything as the parameter is passed on the procedure level. I am under the impression that when you pass a parameter to the procedure like this you can't change it into the procedure.
    PLEASE GUIDE. Thanks a bunch. I really appreciate it.

    From what I understand your variables that are passed into the
    procedure can be manipulated as local variable to the procedure.
    Here is my interpretation of what your attempting to do:
    create or replace procedure A (x in number) IS
    yes varchar2(3) := 'No';
    begin
    dbms_output.put_line('Start value for yes:'||yes);
    select 'yes' into yes from dual where x+1 = 2;
    dbms_output.put_line('End value for yes:'||yes);
    end;
    Call the procedure called "A" passing in a "1".
    EG:
    BEGIN
    A(1);
    END;
    Does this answer your question?
    ,Russ

  • How can i pass the  parameter for strored procedure from java

    dear all,
    I am very new for stored procedure
    1. I want to write the strored procedure for insert.
    2. How can i pass the parameter for that procedure from java.
    if any material available in internet create procedure and call procedure from java , and passing parameter to procedure from java

    Hi Ram,
    To call the callable statement use the below sample.
    stmt = conn.prepareCall("{call <procedure name>(?,?)}");
    stmt.setString(1,value);//Input parameter
    stmt.registerOutParameter(2,Types.BIGINT);//Output parameter
    stmt.execute();
    seq = (int)stmt.getLong(2);//Getting the result from the procedure.

  • How to pass a parameter into execute sql task and later use it into dataflow task?

    i am in a situation, where i have a logging table in which i have a primary key called ETL_log_ID which is an identity column and acts as a foreign key for various fact table and dimension tables which are populated using SSIS packages. Now i wanna use the
    ETL_log_ID as a parameter in the execute sql task which populates the log table and pass the same value in the data flow task which populates the facts and dimension. Can you let me know how to pass the parameter in a step by step procedure.
    Thanks,
    Nikhil
      

    Nikhil,
    You can check the following :
    http://www.programmersedge.com/post/2013/03/05/ssis-execute-sql-task-mapping-parameters-and-result-sets.aspx
    http://stackoverflow.com/questions/7610491/how-to-pass-variable-as-a-parameter-in-execute-sql-task-ssis
    Regarding the usage in Dataflow task, Can you elaborate on that a little?
    Thanks,
    Jay
    <If the post was helpful mark as 'Helpful' and if the post answered your query, mark as 'Answered'>

  • How to pass IN parameter as BOOLEAN for concurrent program in Apps(Environ)

    hi all
    i am using a standard package procedure,where in which i need to pass some parameters to a procedure,
    some of the parameters there are BOOLEAN type ,can anybody help me to know , How to pass IN parameter as BOOLEAN for concurrent program in Apps(Environ)

    Already answered this on the SQL forum (How to give IN parameter as BOOLEAN in a concurrent program.

  • How to pass date parameter from one page to other in BSP application

    Hello gurus,
    In my BSP application i have taken an input field and made its type "date" and its value also of type date and have set showhelp .
    Now once a particular date is given as an input i want to pass its value to next page. And in next page i have to fire a query based on the date entered in previous page...
    Now my prb is that my date value is not getting passed to the next page.
    I have used
    navigation->set_parameter( name = 'BEGDA' value = BEGDA ).
    to pass date parameter.....still parameter is not getting passed.
    plz help me with this.....
    thankx.....

    Hi Eddy,
    By truncation i mean the entire date becomes 10 char including the ' . ' eg(06.12.2006).
    so with begda being 8chars it takes my date as 06.12.200
    as a result my query is not getting executed.
    now i have tried to use a FM  'CONVERT_DATE_TO_INTERN_FORMAT'.
    in my 1st page but still in 2nd page its giving me following error.
    <b>The data that was read could not be written to the specified target field during a SELECT access. Either the conversion is not supported for the type of the target field, or the target field is too short to accept the value, or the data is not in the appropriateformat for the target field.
    </b>
    Regards
    Swati

  • Passing query parameter through xcelsius 2011 at run time

    I am using reporting service as a web connectivity and I am trying to pass the query parameter at run time from the dashboard. While executing the xcelsius at first time it is working well with the default value but after passing the parameter from combo box, the data is not loading. It is not returning anything except the field name.
    I am new to this xcelsius. Your help will be really appreciated.
    Thanks.

    Hi,
    if you do the following thing,i think it may be helpfull,
    First select Data in menubar>Connection->select required connection>select the useage option in connection definition window>give  trigger cell value as combo box destination cell.
    Thanks,
    Ramana

  • Error while passing Application Parameter in Transaction iView editor

    Dear all
    I am trying to pass some application parameters to one of the transaction iViews. Without passing any parameter in 'Application Parameters' field of the iView editor the iView can be previewed/displayed fine. But when I am trying to pass the parameters as follows <Screen_Parameter1>=<ABC>&<...>=<...> the preview is coming up with a Portal runtime error saying that the <Screen_Parameter1> is an invalid terminal property of the root context_
    Can anybody help me out with this?
    MAQ

    In any application parameter field u need pass screen_field
    u need to find the screen_field value first .
    login to backend ECC server , give u r required Tcode .
    click in  required field , press f1 -> click on Technical setting icon on top .
    in that screen , screen_field is the last field .
    copy  this screen_field value
    place ths screen _field value in application parameter field .
    example : rs38-programm=ztest
    here re38-programm is the screen field
      ztest is it's value .
    & this is used for the separator between 2 values

  • How do I Pass a parameter to a SQL Component Task where the source SQL statement is also a variable

    Hi,
    I have been tasked with making a complex package more generic.
    To achieve this I need to pass a parameter to a SQL Component Task where the source SQL statement is also a variable.
    So to help articulate my question further I have create a package and database as follows; -
    USE [KWPlay]
    GO
    /****** Object: Table [dbo].[tblTest] Script Date: 05/14/2014 17:08:02 ******/
    SET ANSI_NULLS ON
    GO
    SET QUOTED_IDENTIFIER ON
    GO
    CREATE TABLE [dbo].[tblTest](
    [ID] [bigint] IDENTITY(1,1) NOT NULL,
    [Description] [nvarchar](50) NULL,
    CONSTRAINT [PK_tblTest] PRIMARY KEY CLUSTERED
    [ID] ASC
    )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
    ) ON [PRIMARY]
    GO
    I populated this table with a single record.
    I unit tested the SQL within SSMS as follows;
    SELECT * FROM dbo.tblTest
    Result; -
    ID           
    Description
    1             
    Happy
    DECLARE @myParam NVARCHAR(100)
    SET @myParam = 'Sad'
    UPDATE dbo.tblTest SET [Description] = @myParam FROM dbo.tblTest WHERE ID = 1
    SELECT * FROM dbo.tblTest
    Result; -
    ID   
    Description
    1    
    Sad
    Within the package I created two variables as follows; -
    Name: strSQL
    Scope: Package
    Data Type: String
    Value: UPDATE dbo.tblTest SET [Description] = @myParam FROM dbo.tblTest WHERE ID = 1
    Name: strStatus
    Scope: Package
    Data Type: String
    Value: Happy
    I then created a single ‘Execute SQL Task’ component within the control flow as follows; -
    However when I run the above package I get the following error; -
    SSIS package "Package.dtsx" starting.
    Error: 0xC002F210 at Execute SQL Task, Execute SQL Task: Executing the query "UPDATE dbo.tblTest SET [Description] = @myParam FR..." failed with the following error:
    "Parameter name is unrecognized.". Possible failure reasons: Problems with the query, "ResultSet" property not set correctly, parameters not set correctly, or connection not established correctly.
    Task failed: Execute SQL Task
    Warning: 0x80019002 at Package: SSIS Warning Code DTS_W_MAXIMUMERRORCOUNTREACHED. 
    The Execution method succeeded, but the number of errors raised (1) reached the maximum allowed (1); resulting in failure. This occurs when the number of errors reaches the number specified in MaximumErrorCount. Change the MaximumErrorCount or fix the
    errors.
    SSIS package "Package.dtsx" finished: Failure.
    I also tried; - 
    Name: strSQL
    Scope: Package
    Data Type: String
    Value: UPDATE dbo.tblTest SET [Description] = ? FROM dbo.tblTest WHERE ID = 1
    However I received the error; - 
    SSIS package "Package.dtsx" starting.
    Error: 0xC002F210 at Execute SQL Task, Execute SQL Task: Executing the query "UPDATE dbo.tblTest SET [Description] = ? FROM dbo...." failed with the following error: "Parameter name is unrecognized.". Possible failure reasons: Problems with
    the query, "ResultSet" property not set correctly, parameters not set correctly, or connection not established correctly.
    Task failed: Execute SQL Task
    Warning: 0x80019002 at Package: SSIS Warning Code DTS_W_MAXIMUMERRORCOUNTREACHED.  The Execution method succeeded, but the number of errors raised (1) reached the maximum allowed (1); resulting in failure. This occurs when the number of errors reaches
    the number specified in MaximumErrorCount. Change the MaximumErrorCount or fix the errors.
    SSIS package "Package.dtsx" finished: Failure.
    Kind Regards,
    Kieran.
    Kieran Patrick Wood http://www.innovativebusinessintelligence.com http://uk.linkedin.com/in/kieranpatrickwood http://kieranwood.wordpress.com/

    Tried; - 
    Name: strSQL
    Scope: Package
    Data Type: String
    Value: UPDATE dbo.tblTest SET [Description] = ? FROM dbo.tblTest WHERE ID = 1
    and; - 
    Result; - 
    SSIS package "Package.dtsx" starting.
    SSIS package "Package.dtsx" finished: Success.
    Therefore the answer was to put the parameter number rather than the parameter name under the parameter mapping tab-> parameter name column. 
    Kieran Patrick Wood http://www.innovativebusinessintelligence.com http://uk.linkedin.com/in/kieranpatrickwood http://kieranwood.wordpress.com/

  • Passing a parameter list from a web form to a report

    I am using FORMS6 and REPORTS6, with OAS 4.07 on NT4 (SP3).
    In client server mode all works well - i am able to pass parameter lists from my calling form to the relevant reports and view them (using RUN_PRODUCT).
    However, when i try and do the same by deploying the web Form I come up against several obstacles.
    1. How do you pass a parameter list over without using "Paramform=Yes" - a waste of time seeing a html version of the reports parameter form when all the necessary parameters have been selected in the form.
    2. if i use web.show_document, with paramform=no, the report runs but with it's default settings.
    Any light you can shed would be greatly appreciated.

    Hi Tony ,
    Launcher form is just a simple form(Non database form) which will be having all fields that is required for the report and button to run the report .
    When button pressed trigger
    Pass all the parameters which are required using Run_product tool & Call the report by Web.Show_document
    Best way to see the report is in .pdf format in adobe acrobat reader
    I hope it will help you
    Bye
    Rao guduru

  • [Web Dynpro ABAP] - Passing a parameter between 2 windows

    Hi!
    I'm trying to do a web dynpro application that displays in a popup the result of a research.
    Thus, I have:
              - main_view embedded to main_window
              - popup_view embedded to popup_window
    In main_view, I have an input field where the user can enter a string. After clicking on the "search" button, the popup has to appear showing all matches corresponding to the user research.
    In need to pass the parameter of the input field from main_view to popup_view but don't know how to do it.
    Thanks for any help you can provide.
    C.
    Edited by: Cristina CHEN MA on May 18, 2009 1:24 PM

    Thank you both for your time.
    TO:  Radhika Vadher   
    I tried your solution but I get an error message when using
    lo_el_tresult->get_static_attributes_table
    => method unknown, protected or private
    I used the wizard to get the node's attributes:
    DATA : lo_nd_tresult TYPE REF TO if_wd_context_node,
               lo_el_tresult TYPE REF TO if_wd_context_element,
               ls_tresult    TYPE wd_this->element_tresult.
    * navigate from <CONTEXT> to <TRESULT> via lead selection
      lo_nd_tresult = wd_context->get_child_node( name =
    wd_this->wdctx_tresult ).
    * get element via lead selection
      lo_el_tresult = lo_nd_tresult->get_element(  ).
    * get all declared attributes
      lo_el_tresult->get_static_attributes(
        IMPORTING
          static_attributes = ls_tresult ).
    But I still have an error message:
    ls_tresult is not an internal table "OCCURS n" specification is missing
    Thanks again for any help you can provide =)
    C.

Maybe you are looking for

  • How do I email multiple PDF files? If they exceed the allowable kilobytes of server?

    I am working on a class reunion and have scanned multiple pictures into a PDF format as well as some documents also in the PDF format. I now would like to email these documents to class members but find that I have a rather large file. I have read ab

  • Accessing ABAP Functions in Web Dynpro Java

    Hi, I am trynig to do "Accessing ABAP Functions in Web Dynpro Java" this application, (which is the example application which i got from www.sdn.sap.com) but everything is fine no error also while dyploying. But it is not dysplaying the first page af

  • IPhone 4 not recognized by PC

    Hi For some time now my iPhone is not recgnized by my pc( I get a message saying device not recognized). I have tried every suggestion I saw including updating and reinstalling the driver. Checking it on other computers ( Mac and pc) - it was not rec

  • N97 Mini water resistance

    The N97 mini seems very susceptible to moisture. I answered the phone when I was in the bath.. it stopped working. One drop of water fell on it while I was using it open - I had to let it dry out for two days. Can we treat wet phones with WD40, or us

  • Requirement for Access Seqence - excise conditions

    Hi,    what are the pre requisite condition table records for J1AU excise condition type for the Indian Excise scenario? plz help me to configure my Excise condition type. cond type consists of  export and domestic business, and has three basic forms