How to view refcursor value in pl/sql

Hi,
Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Prod
PL/SQL Release 10.2.0.1.0 - Production
CORE 10.2.0.1.0 Production
TNS for 32-bit Windows: Version 10.2.0.1.0 - Production
NLSRTL Version 10.2.0.1.0 - Production
i have one stored procedure like this
CREATE     OR     REPLACE          PROCEDURE     PRCURRENCYEDIT
CURRENCYCODE     TBLCURRENCY.FLDCURRENCYCODE%TYPE,
CV1          OUT     SYS_REFCURSOR
IS
BEGIN
OPEN     CV1     FOR
SELECT          FLDCURRENCYCODE,
          FLDCURRENCYNAME,
          FLDCURRENCYSYMBOL,
          FLDPREFIXSYMBOL,
          FLDEXCHANGERATE
FROM     TBLCURRENCY
WHERE     FLDCURRENCYCODE          =     CURRENCYCODE     ;
END ;
i want to view the value for cv_1 ..
Thanks in advance
Regards
Ariff

Thanks for the reply
But i have one problem with this stored procedure
PROCEDURE     PRCURRENCYSEARCH
CURRENCYNAME     IN     NVARCHAR2     DEFAULT     NULL ,
BATCHNUMBER     IN     NUMBER          DEFAULT     NULL ,
BATCHSIZE     IN     NUMBER          DEFAULT     NULL ,
RESULTCOUNT     OUT     NUMBER,
TOTALPAGECOUNT     OUT     NUMBER,
CV_1          OUT     SYS_REFCURSOR
IS
V_ROWFROM     NUMBER(19,0)     ;
V_CURRENCYNAME          TBLCURRENCY.FLDCURRENCYNAME%TYPE ;
BEGIN
V_CURRENCYNAME := NVL(CURRENCYNAME, '') || '%';
INSERT     INTO     GTT_CURRENCY
( FLDCURRENCYCODE )
SELECT     FLDCURRENCYCODE
FROM          TBLCURRENCY
WHERE      (CURRENCYNAME = '%'
OR     FLDCURRENCYNAME          LIKE      '%currencyname' )
ORDER      BY     FLDCURRENCYNAME ;
RESULTCOUNT     :=     SQL%ROWCOUNT;
TOTALPAGECOUNT          :=      FNTOTALPAGECOUNT(RESULTCOUNT, BATCHSIZE);
V_ROWFROM     :=     FNROWFROM(BATCHNUMBER, BATCHSIZE);
OPEN     CV_1     FOR
SELECT          *      FROM
( SELECT     R.FLDCURRENCYCODE,     C.FLDCURRENCYNAME
FROM          GTT_CURRENCY R
JOIN     TBLCURRENCY C
ON     R.FLDCURRENCYCODE     =     C.FLDCURRENCYCODE
WHERE     R.FLDROWNUMBER     >      V_ROWFROM
ORDER     BY     R.FLDROWNUMBER )
WHERE ROWNUM          <=     BATCHSIZE     ;
END ;
when i execute this code using this code
DECLARE
CURR_CUR TBLCURRENCY%ROWTYPE;
CV1 SYS_REFCURSOR;
V1 NUMBER;
V2 NUMBER;
BEGIN
PRCURRENCYSEARCH('INR',NULL,1,V1,V2,CV1);
LOOP
FETCH CV1 INTO CURR_CUR;
EXIT WHEN CV1%NOTFOUND;
DBMS_OUTPUT.PUT_LINE(V1);
DBMS_OUTPUT.PUT_LINE(V2);
DBMS_OUTPUT.PUT_LINE(CURR_CUR.FLDCURRENCYCODE||' '||CURR_cUR.FLDROWNUMBER);
END LOOP;
END;
after execution,the following error occurs
DECLARE
ERROR at line 1:
ORA-06504: PL/SQL: Return types of Result Set variables or query do not match
ORA-06512: at line 9
Note:
desc tblcurrency
Name Null? Type
FLDCURRENCYCODE NOT NULL NUMBER
FLDCURRENCYNAME NOT NULL NVARCHAR2(100)
FLDCURRENCYSYMBOL NOT NULL NVARCHAR2(50)
FLDPREFIXSYMBOL NOT NULL NUMBER
FLDEXCHANGERATE NOT NULL NUMBER(18,6)
Thanks in advance
Regards
ariff

Similar Messages

  • How to view cursor values while in DEBUG mode

    I am using SQL developer 1.5.1 and I am debugging my Stored Procedure.
    I cannot find how to view the contents of variables as I step through the code.
    For example, I have the following IF:
    IF NVL(rat_rec.rat_css_agency_cd, -1) != NVL(lclcssagencycd, -1) THEN
    lclupdate := TRUE;
    END IF;
    I want to be able to see what is the value of rat_rec.rat_css_agency_cd and also lclcssagencycd, to see why it is evaluating this IF statement to be true.
    In other words it is saying rat_rec.rat_css_agency_cd is NOT the same as lclcssagencycd, but I want to see what the differences are and need to be able to 'look' at the value of each variable.
    It is NOT showing on SMART DATA or DATA.
    I have not used SQL Developer much before, so must be missing something.
    (In VB, I can debug a routine and then stop on a variable and press SHIFT+F9 to see the contents of the fields. I want to do the same thing in SQL DEVELOPER).

    Yes, I do.
    I am able to step through the code and if I stop on a particular line of code, I want to be able to evaluate the variables or cursor fields that I am on to see what their contents are.
    Sean

  • How to use 'REQUEST' value on PL/SQL

    Hi All,
    I have assigned 'SEARCH' as button request to search button. I want to use this value in PL/SQL some thing like
    IF REQUEST='SEARCH' THEN
    --do something
    ELSE
    --do something else
    END IF;
    Can any one suggest how to access the 'REQUEST' value?
    Thanks in advance.
    Regards,
    Hari

    Hi rchalton!
    Sorry for that. Here is an english document which also shows an example of how to use v('REQUEST') or :REQUEST.
    [http://download.oracle.com/docs/cd/E14373_01/appdev.32/e11838/concept.htm]
    regards
    Edited by: Florian W. on 06.04.2009 15:35
    I've also tried to translate this link from german into english with google and it worked very good.

  • How to retrieve the values from PL/SQL table types.

    Hi Every one,
    I have the following procedure:
    DECLARE
    TYPE t1 IS TABLE OF emp%ROWTYPE
    INDEX BY BINARY_INTEGER;
    t t1;
    BEGIN
    SELECT *
    BULK COLLECT INTO t
    FROM emp;
    END;
    This procedure works perfectly fine to store the rows of employee in a table type. I am not able to retrieve the values from Pl/SQL table and display it using dbms_output.put_line command.
    Can anybody help me please!!!!!
    Thanks
    Ahmed.

    You mean, you can't add this
    for i in t.first..t.last loop
    dbms_output.put_line(t(i).empno||' '||t(i).ename||' '||t(i).job);
    end loop;or you can't add this
    set serveroutput onor maybe, you are working in third party application where dbms_output is not applicable at all?
    You see, not able like very similar it is not working - both are too vague...
    Best regards
    Maxim

  • How to pass a value into a SQL Query?

    Hi There,
    I want to know if there is a possibility to pass a dynamic value in a sql query. For example I have a currency rate value (ex: rate = 1.319, 2.23 etc) which user wants to input when running the query (The rate is not taken from the system, so I cannot compare to any table column and pass it as a parameter).
    And this rate has to be used in my query to do some calculation. Is this possible? The value :p_currency_rate doesn't work
    Any ideas please?
    Thank you,
    Prathibha

    SELECT DISTINCT
    hou.name
    ,poh.segment1 po_num
    ,pol.line_num po_line_num
    ,poh.currency_code
    --,trunc(poh.creation_date) po_creation_date
    ,pol.cancel_flag
    ,msi.segment1 item_num
    ,pol.unit_price
    ,round(cost.item_cost,5)
    ,round((&p_rate * pol.unit_price),5) "CONVERSION"
    ,(cost.item_cost - round((&p_rate * pol.unit_price),5)) difference
    ,pov.vendor_name
    FROM
    po.po_headers_all poh
    ,po.po_lines_all pol
    ,po.po_vendors pov
    ,hr.hr_all_organization_units hou
    ,inv.mtl_system_items_b msi
    ,bom.cst_item_costs cost
    WHERE
    poh.po_header_id = pol.po_header_id
    and pov.vendor_id = poh.vendor_id
    and poh.org_id = hou.organization_id
    and hou.organization_id = :p_operating_unit
    and poh.currency_code = :p_currency
    and poh.creation_date between :po_creation_date_from and :po_creation_date_to
    and poh.type_lookup_code = 'BLANKET'
    and msi.inventory_item_id = pol.item_id
    and cost.INVENTORY_ITEM_ID = pol.ITEM_ID
    --and (cost.item_cost - pol.unit_price) <> 0
    and (cost.item_cost - round((&p_rate * pol.unit_price),5)) <> 0
    and cost.organization_id = 1
    and msi.organization_id = 1
    and cost.cost_type_id = 3 --- Pending cost type
    and nvl(upper (pol.closed_code),'OPEN') not in('CANCELLED', 'CLOSED', 'FINALLY CLOSED', 'REJECTED')
    and nvl(upper (poh.closed_code),'OPEN') not in('CANCELLED', 'CLOSED', 'FINALLY CLOSED', 'REJECTED')
    and nvl(pol.cancel_flag, 'N') = 'N'
    and &p_rate user parameter
    I want this p_rate to be passed as a user parameter.

  • How to view sys_context value in SQL Developer?

    hello
    i can view the results via sqlplus with following statements:
    SELECT SYS_CONTEXT ('empno_ctx', 'empno_attrib') empno_attrib FROM DUAL;
    SELECT * FROM SESSION_CONTEXT;
    both retrieve correct values;
    now, since i work mainly in SQL Developer i wanted to view the results in there as well;
    i ran the procedure in SQL Developer via right-click on the procedure -> run;
    it looked like it ran ok;
    however when i do the above queries nothing is retrieved;
    any suggestions?
    thanks
    rgds

    Hi,
    You can use
    SELECT SYS_CONTEXT ('empno_ctx', 'empno_attrib') empno_attrib into <Variable Name> FROM DUAL;
    dbms_output.putline (<Variable Name>
    So after you execute the procedure. You will be able to see the value in output window.
    Regards,
    Kushal Gupta

  • How to view init.orafile content through sql command prompt

    Hi all,
    please tell me the solution for this. i want to see all the init.ora parameters in command prompt is there is any special command to view all parameters of init.ora in sql prompt.
    and server utilization from sql prompt.
    Thank you,

    Hi
    SQL prompt base:
    1. show parameter xxx << Mention by Nicolas
    2. use v$parameter << mention by sybrand_b
    3. use also:
    ◦V$PARAMETER2 view - display the currently in effect parameter values, but "List Values" are shown in multiple rows
    ◦V$SPPARAMETER view - display the current contents of the server parameter file.
    Source:
    http://www.orafaq.com/node/5 <<Viewing Parameters Settings:
    OS level
    3. Os level cat initxx << mention by me smile
    Regard
    Helios

  • How to view the result of any SQL script

    Hi
    I am working on Oracle 10 g Express Edition.I have an explicit cursor code ,a very basic one.I want to know how can i view result of the script.When i Save and run the script i get nothign on the window.
    I am pasting the script for the Reference.
    Code
    Declare
    CURSOR c_p IS
    select p_id from PRODUCTS;
    v_pid PRODUCTS.p_id%type;
    Begin
    OPEN c_p;
    Loop
    FETCH c_p into v_pid;
    Exit when c_p%NOTFOUND;
    Dbms_output.put_line(v_pid);
    End loop;
    CLOSE c_p;
    End;
    Prod_id Prod_category Prod_name Prod_price
    123456 Games Sony PS3 599.99
    234567 Games Sony PSP 249.99
    345678 Games Nintendo Wii 249.99
    456789 Games Microsoft Xbox 360 349.99
    567890 Computer Microsoft Vista 349.99

    Hi,
    Try like this:
    SQL> set serveroutput on
    SQL> DECLARE
      2  CURSOR c_p IS
      3  select first_name from EMP;
      4  v_name EMP.first_name%type;
      5  Begin
      6  OPEN c_p;
      7  Loop
      8  FETCH c_p into v_name;
      9  Exit when c_p%NOTFOUND;
    10  Dbms_output.put_line(v_name);
    11  End loop;
    12  CLOSE c_p;
    13  End;
    14
    15
    16  /
    Steven
    Neena
    Lex
    Alexander
    Bruce
    David
    Valli
    Diana
    Nancy
    Daniel
    John
    Ismael
    Jose Manuel
    Luis
    Den
    Alexander
    Shelli
    Sigal
    Guy
    Karen
    Matthew
    Adam
    Payam
    Shanta
    Kevin
    Julia
    Irene
    James
    Steven
    Laura
    Mozhe
    James
    TJ
    Jason
    Michael
    Ki
    Hazel
    Renske
    Stephen
    John
    Joshua
    Trenna
    Curtis
    Randall
    Peter
    John
    Karen
    Alberto
    Gerald
    Eleni
    Peter
    David
    Peter
    Christopher
    Nanette
    Oliver
    Janette
    Patrick
    Allan
    Lindsey
    Louise
    Sarath
    Clara
    Danielle
    Mattea
    David
    Sundar
    Amit
    Lisa
    Harrison
    Tayler
    William
    Elizabeth
    Sundita
    Ellen
    Alyssa
    Jonathon
    Jack
    Kimberely
    Charles
    Winston
    Jean
    Martha
    Girard
    Nandita
    Alexis
    Julia
    Anthony
    Kelly
    Jennifer
    Timothy
    Randall
    Sarah
    Britney
    Samuel
    Vance
    Alana
    Kevin
    Donald
    Douglas
    Jennifer
    Michael
    Pat
    Susan
    Hermann
    Shelley
    William
    PL/SQL procedure successfully completed.
    SQL>Cheers,

  • How to view database values from server to client

    hi friends
    i have database in server side, i am storing values to the database from client side machine through remote methods. But now i need to view the database values from the server side. how to do this using RMI.
    Plz give me suggestion.
    by
    vinod

    Why do you have to use RMI for this task? That way you've got to write both a client and a server. Just use JDBC directly from the server.

  • How to replace variable value of a sql query dynamically

    Hi all,
    Trying to execute sql queries present in Oracle table and the query it self contains the ODI variable #EMP_NO.
    At the run time we thought of passing the variable values.
    table contains query like
    update table <table name> set <column name>= 5000 where emp_no = #EMP_NO
    We need to execute the sql query using a ODI procedure, to pick the sql query from table we use another variable #varSQLID and in the command on source tab wrote like
    select sql_query varSQL from emp_sql where query_id=#varSQLID
    Command on target
    #varSQL
    when ever I tried to execute I am getting error please let me know what changes are required .
    The question is whether it's possible to replace the variable value present in the above sql ?
    regards,
    Palash Chatterjee

    Thanks Siddhartha,
    Actually we have been doing the same, means half of the query has been kept in the table and rest is being added in the " command on source " tab of the procedure .
    But the problem is , the "where" condition is not same for all SQL queries,
    to provide 27 different sqls queries for 27 packages we have to create 27 procedures (as "where" condition may take other column values along with "EMPNO" for the JOIN condition ) .
    Any suggestion of keeing SQL along with the variable and storing it in the table may resolve our problem and work of 27 procedures can be performed by a single procedure .
    regards,
    Palash Chatterjee

  • How to view few values in F4 Variable screen?

    Hi All,
    According to the requirement user needs to see only few values in the variable screen.
    for example if the characterstic info object "ZPRODUCT" contains 100 values, but in the variable screen user needs to see only required 10 values, So that user can select 1 or multiple values from the list of 10 possible values.
    Could you please suggest me, how can i implement this scenario?
    Regards,
    Ravi

    Hello,
    Will this variant valid if we assign the report to a role and integrated into portal?
    The variant is working fine when i execute the report directly, but is dissappearing when i call it in portal via Role.
    Do you have any ideas on this problem?
    Regards,
    Ravi

  • How to view  a stored procedure from sql plus

    Can anyone please tell what is the command for viewing the content of the stored procedure from sql plus ?
    Thanks

    Hi,
    I use this simple script to retrieve.......
    EDTRAD@T_E_S_9-->l
    1 select text from all_source where name = 'GET_MAN' -- proc name here
    2* order by line asc
    EDTRAD@T_E_S_9-->/
    TEXT
    FUNCTION get_man (in_man SSBOSS.CLNTWORK.manager%type)
    RETURN varchar2 IS
    CURSOR get_man(in_man SSBOSS.CLNTWORK.manager%type) IS
    SELECT name
    FROM ssboss.clntwork
    WHERE agency = 'TM'
    AND manager = in_man
    AND manager is not null
    AND manager != '**OB**';
    v_man SSBOSS.CLNTWORK.name%type := null;
    BEGIN
    OPEN get_man(in_man);
    FETCH get_man INTO v_man;
    IF get_man%notfound THEN
    v_man := 'Manager Not Found !';
    RETURN (v_man);
    CLOSE get_man;
    END IF;
    RETURN (v_man);
    CLOSE get_man;
    END;
    21 rows selected.
    EDTRAD@T_E_S_9-->

  • How  to compare previouse value in pl/sql array

    DECLARE
    CURSOR stg_raw_cur IS
    SELECT RAW_STG_ID,
    DEVICE_CD,
    MODEL_VERSION,
    PLATFORM_CD,
    PROFILE_COOKIE,
    LOCATION_CD,
    SAMPLE_RATE,
    EVENT_TYPE_CD,
    to_char(to_date(to_date(substr(EVENT_DATE_TIME,1,8),'yyyymmdd')-1 ||
    'T' ||
    substr(EVENT_DATE_TIME,10,8)
    || 'Z','DD-MON-RR"T"HH24:MI:SS"Z"'), 'YYYYMMDDYY"T"HH24:MI:SS"Z"' ) EVENT_DATE_TIME,
    EVENT_SPECIFIC,
    BATCH_ID,
    DWH_ARVL_DT,
    DWH_ARVL_DT_ID,
    DWH_CREATE_DT from dwh_stg.stg_raw where batch_id >= 200
    order by batch_id asc;
    TYPE stgrawarr IS TABLE OF stg_raw_cur%ROWTYPE;
    stg_raw_rec stgrawarr;
    l_batch_id NUMBER :=0 ;
    v_ctr NUMBER :=0;
    l_temp_batch_id number :=0;
    BEGIN
    OPEN stg_raw_cur;
    LOOP
    FETCH stg_raw_cur BULK COLLECT INTO stg_raw_rec LIMIT 100;
    EXIT
    WHEN stg_raw_cur%NOTFOUND;
    END LOOP;
    CLOSE stg_raw_cur;
    for i in stg_raw_rec.first..stg_raw_rec.last
    loop
    dbms_output.put_line('batch id is '|| stg_raw_rec(i).batch_id );
    IF l_batch_id != stg_raw_rec(i).batch_id
    then
    dbms_output.put_line('Different');
    end if;
    l_temp_batch_id := stg_raw_rec(i).batch_id;
    commit;
    end loop;
    END;
    I want to compare previous value of stg_raw_rec(i).batch_id if differnet then increament the value
    else leave the same.
    thanks.

    Try this,
    FOR i IN stg_raw_rec.FIRST .. stg_raw_rec.LAST
       LOOP
          IF l_temp_batch_id != stg_raw_rec (i).batch_id
          THEN
             --increment
             l_temp_batch_id := l_temp_batch_id + 1;
          END IF;
           DBMS_OUTPUT.PUT_LINE ('batch id is ' || stg_raw_rec (i).batch_id||' unique batch id is '||l_temp_batch_id);
        --  DBMS_OUTPUT.PUT_LINE ('batch id is ' || stg_raw_rec (i).batch_id);
        --  IF l_batch_id != stg_raw_rec (i).batch_id
        --  THEN
        --    DBMS_OUTPUT.PUT_LINE ('Different');
        --  END IF;
          l_temp_batch_id := stg_raw_rec (i).batch_id;
          COMMIT;
       END LOOP;

  • How could I replace hard coded value in my sql query with constant value?

    Hi all,
    Could anyone help me how to replace hardcoded value in my sql query with constant value that might be pre defined .
    PROCEDURE class_by_day_get_bin_data
         in_report_parameter_id   IN   NUMBER,
         in_site_id               IN   NUMBER,
         in_start_date_time       IN   TIMESTAMP,
         in_end_date_time         IN   TIMESTAMP,
         in_report_level_min      IN   NUMBER,
         in_report_level_max      IN   NUMBER
    IS
      bin_period_length   NUMBER(6,0); 
    BEGIN
      SELECT MAX(period_length)
         INTO bin_period_length
        FROM bin_data
         JOIN site_to_data_source_lane_v
           ON bin_data.data_source_id = site_to_data_source_lane_v.data_source_id
         JOIN bin_types
           ON bin_types.bin_type = bin_data.bin_type 
       WHERE site_to_data_source_lane_v.site_id = in_site_id
         AND bin_data.start_date_time     >= in_start_date_time - numtodsinterval(1, 'DAY')
         AND bin_data.start_date_time     <  in_end_date_time   + numtodsinterval(1, 'DAY')
         AND bin_data.bin_type            =  2
         AND bin_data.period_length       <= 60;
      --Clear the edr_class_by_day_bin_data temporary table and populate it with the data for the requested
      --report.
      DELETE FROM edr_class_by_day_bin_data;
       SELECT site_to_data_source_lane_v.site_id,
             site_to_data_source_lane_v.site_lane_id,
             site_to_data_source_lane_v.site_direction_id,
             site_to_data_source_lane_v.site_direction_name,
             bin_data_set.start_date_time,
             bin_data_set.end_date_time,
             bin_data_value.bin_id,
             bin_data_value.bin_value
        FROM bin_data
        JOIN bin_data_set
          ON bin_data.bin_serial = bin_data_set.bin_serial
        JOIN bin_data_value
          ON bin_data_set.bin_data_set_serial = bin_data_value.bin_data_set_serial
        JOIN site_to_data_source_lane_v
             ON bin_data.data_source_id = site_to_data_source_lane_v.data_source_id
            AND bin_data_set.lane = site_to_data_source_lane_v.data_source_lane_id
        JOIN (
               SELECT CAST(report_parameter_value AS NUMBER) lane_id
                 FROM report_parameters
                WHERE report_parameters.report_parameter_id    = in_report_parameter_id
                  AND report_parameters.report_parameter_group = 'LANE'
                  AND report_parameters.report_parameter_name  = 'LANE'
             ) report_lanes
          ON site_to_data_source_lane_v.site_lane_id = report_lanes.lane_id
        JOIN (
               SELECT CAST(report_parameter_value AS NUMBER) class_id
                 FROM report_parameters
                WHERE report_parameters.report_parameter_id    = in_report_parameter_id
                  AND report_parameters.report_parameter_group = 'CLASS'
                  AND report_parameters.report_parameter_name  = 'CLASS'
             ) report_classes
          ON bin_data_value.bin_id = report_classes.class_id
        JOIN edr_rpt_tmp_inclusion_table
          ON TRUNC(bin_data_set.start_date_time) = TRUNC(edr_rpt_tmp_inclusion_table.date_time)
       WHERE site_to_data_source_lane_v.site_id = in_site_id
         AND bin_data.start_date_time     >= in_start_date_time - numtodsinterval(1, 'DAY')
         AND bin_data.start_date_time     <  in_end_date_time   + numtodsinterval(1, 'DAY')
         AND bin_data_set.start_date_time >= in_start_date_time
         AND bin_data_set.start_date_time <  in_end_date_time
         AND bin_data.bin_type            =  2
         AND bin_data.period_length       =  bin_period_length;
    END class_by_day_get_bin_data;In the above code I'm using the hard coded value 2 for bin type
    bin_data.bin_type            =  2But I dont want any hard coded number or string in the query.
    How could I replace it?
    I defined conatant value like below inside my package body where the actual procedure comes.But I'm not sure whether I have to declare it inside package body or inside the procedure.
    bin_type     CONSTANT NUMBER := 2;But it does't look for this value. So I'm not able to get desired value for the report .
    Thanks.
    Edited by: user10641405 on May 29, 2009 1:38 PM

    Declare the constant inside the procedure.
    PROCEDURE class_by_day_get_bin_data(in_report_parameter_id IN NUMBER,
                                        in_site_id             IN NUMBER,
                                        in_start_date_time     IN TIMESTAMP,
                                        in_end_date_time       IN TIMESTAMP,
                                        in_report_level_min    IN NUMBER,
                                        in_report_level_max    IN NUMBER) IS
      bin_period_length NUMBER(6, 0);
      v_bin_type     CONSTANT NUMBER := 2;
    BEGIN
      SELECT MAX(period_length)
        INTO bin_period_length
        FROM bin_data
        JOIN site_to_data_source_lane_v ON bin_data.data_source_id =
                                           site_to_data_source_lane_v.data_source_id
        JOIN bin_types ON bin_types.bin_type = bin_data.bin_type
       WHERE site_to_data_source_lane_v.site_id = in_site_id
         AND bin_data.start_date_time >=
             in_start_date_time - numtodsinterval(1, 'DAY')
         AND bin_data.start_date_time <
             in_end_date_time + numtodsinterval(1, 'DAY')
         AND bin_data.bin_type = v_bin_type
         AND bin_data.period_length <= 60;
      --Clear the edr_class_by_day_bin_data temporary table and populate it with the data for the requested
      --report.
      DELETE FROM edr_class_by_day_bin_data;
      INSERT INTO edr_class_by_day_bin_data
        (site_id,
         site_lane_id,
         site_direction_id,
         site_direction_name,
         bin_start_date_time,
         bin_end_date_time,
         bin_id,
         bin_value)
        SELECT site_to_data_source_lane_v.site_id,
               site_to_data_source_lane_v.site_lane_id,
               site_to_data_source_lane_v.site_direction_id,
               site_to_data_source_lane_v.site_direction_name,
               bin_data_set.start_date_time,
               bin_data_set.end_date_time,
               bin_data_value.bin_id,
               bin_data_value.bin_value
          FROM bin_data
          JOIN bin_data_set ON bin_data.bin_serial = bin_data_set.bin_serial
          JOIN bin_data_value ON bin_data_set.bin_data_set_serial =
                                 bin_data_value.bin_data_set_serial
          JOIN site_to_data_source_lane_v ON bin_data.data_source_id =
                                             site_to_data_source_lane_v.data_source_id
                                         AND bin_data_set.lane =
                                             site_to_data_source_lane_v.data_source_lane_id
          JOIN (SELECT CAST(report_parameter_value AS NUMBER) lane_id
                  FROM report_parameters
                 WHERE report_parameters.report_parameter_id =
                       in_report_parameter_id
                   AND report_parameters.report_parameter_group = 'LANE'
                   AND report_parameters.report_parameter_name = 'LANE') report_lanes ON site_to_data_source_lane_v.site_lane_id =
                                                                                         report_lanes.lane_id
          JOIN (SELECT CAST(report_parameter_value AS NUMBER) class_id
                  FROM report_parameters
                 WHERE report_parameters.report_parameter_id =
                       in_report_parameter_id
                   AND report_parameters.report_parameter_group = 'CLASS'
                   AND report_parameters.report_parameter_name = 'CLASS') report_classes ON bin_data_value.bin_id =
                                                                                            report_classes.class_id
          JOIN edr_rpt_tmp_inclusion_table ON TRUNC(bin_data_set.start_date_time) =
                                              TRUNC(edr_rpt_tmp_inclusion_table.date_time)
         WHERE site_to_data_source_lane_v.site_id = in_site_id
           AND bin_data.start_date_time >=
               in_start_date_time - numtodsinterval(1, 'DAY')
           AND bin_data.start_date_time <
               in_end_date_time + numtodsinterval(1, 'DAY')
           AND bin_data_set.start_date_time >= in_start_date_time
           AND bin_data_set.start_date_time < in_end_date_time
           AND bin_data.bin_type = v_bin_type
           AND bin_data.period_length = bin_period_length;
    END class_by_day_get_bin_data;

  • How to pass refcursor as input parameter to a procedure in a package

    Hi there
    Please can anybody explain me with an small example for
    passing a procedure output(output should be a refcursor) and pass that refcursor values into a procedure in a package as input parameter and this value i want to use as join condition in my procedure ie. ename=refcursor.ename like this).That my exact question is how to pass refcursor values as in parameter
    Pls suggest me with some example statements
    thanks in advance
    prasanth a.s.

    I am giving you a generic example.
    SQL> variable v_out REFCURSOR
    SQL> r
      1  DECLARE
      2  PROCEDURE TEST1(p_out OUT SYS_REFCURSOR) IS
      3  BEGIN
      4  OPEN p_out FOR SELECT EMPNO,ENAME FROM SCOTT.EMP;
      5  END;
      6  PROCEDURE TEST2(p_in IN SYS_REFCURSOR) IS
      7  v_empno NUMBER(10);
      8  v_ename VARCHAR2(30);
      9  BEGIN
    10  LOOP
    11  FETCH p_in INTO v_empno,v_ename;
    12  EXIT WHEN p_in%NOTFOUND;
    13  DBMS_OUTPUT.PUT_LINE(v_ename);
    14  END LOOP;
    15  NULL;
    16  END;
    17  BEGIN
    18     TEST1(:v_out);
    19     TEST2(:v_out);
    20* END;
    SMITH
    ALLEN
    WARD
    JONES
    MARTIN
    BLAKE
    CLARK
    SCOTT
    KING
    TURNER
    ADAMS
    JAMES
    FORD
    MILLER
    PL/SQL procedure successfully completed.

Maybe you are looking for