如何使变量保持从一个过程中获取的值,以便在plsql中的另一个过程中使用

时间:2015-03-17 22:17:13

标签: sql oracle plsql

我有一个包含两个程序的包 在同一个包中。

  1. p_set_values (pn_id_number IN number)
  2. p_get_values (prc_records OUT sys_refcursor)
  3. p_set_values (pn_id_number IN number)   将数据插入my_table,其中id_number = pn_id_number

    p_get_values (prc_records OUT sys_refcursor) - 此过程必须从my_table中选择值,其中id_number = pn_id_number(注意:用于插入值的相同id号,现在用于设置插入的值。)

    我已声明包级别变量并指定为ln_id_number = pn_id_number

    现在使用这个' ln_id_number'在第二个过程中,使用dbms_putput.putline(ln_id_number)检查ln_id_number的值是什么

    请帮我这样做,

    程序如下

    CREATE OR REPLACE PACKAGE BODY pck_exit_info
    IS
      ln_id_number po010.polref%TYPE;
    
      PROCEDURE p_set_values(pn_id_number IN number
                            ,pv_exit_option IN  VARCHAR2)
      IS
        ln_system_date cs340.sysdte%TYPE;
        lv_audaplcde   package_audits.audit_application_code%TYPE;
        ln_audstfno    package_audits.audit_staff_number%TYPE;
        ln_audupdid    NUMBER;
        lv_exit_option VARCHAR2(1);
      BEGIN
        ln_system_date    := pck_system_context.f_get_system_date;
        ln_id_number      := pn_id_number;
        dbms_output.put_line(ln_id_number);
    
        SELECT AUDUPDID_SEQ.NEXTVAL INTO ln_audupdid FROM DUAL;
    
        IF pv_exit_option = 'LE' THEN
          lv_exit_option := 'L';
        ELSE
          lv_exit_option := 'S';
        END IF;
    
        SELECT audit_application_code,audit_staff_number
          INTO lv_audaplcde,ln_audstfno
          FROM package_audits
          WHERE process = 'PCK_LEAVERS'
            AND subprocess ='DEFAULT';
    
        INSERT INTO my_table
          VALUES(pn_id_number
                 ,ln_system_date
                 ,lv_exit_option
                 ,ln_audupdid
                 ,ln_system_date
                 ,lv_audaplcde
                 ,ln_audstfno);
      END set_employer_exit_info;
    
      PROCEDURE p_get_values(prc_records OUT SYS_REFCURSOR) IS
      BEGIN
        /*dbms_output.put_line('ID inside get employer');
        dbms_output.put_line(ln_id_number);*/
    
        OPEN prc_records FOR 
          SELECT *
          FROM   my_table
          WHERE  polref = ln_id_number;
         -- CLOSE  prc_policy;
      END get_employer_exit_info;
    END pck_exit_info;
    

0 个答案:

没有答案