1. 程式人生 > >Oralce儲存過程之包內呼叫其他過程

Oralce儲存過程之包內呼叫其他過程

儲存過程基礎不在這說了。

第一步先建立儲存過程的包體:

create or replace package pk_test_2 as

procedure etl(curDate   out  varchar);

procedure test_gs(age2  in  varchar);

end pk_test_2;

說明:

pk_test_2 是包名

etl 是第一個儲存過程名字

test_gs 是第二個儲存過程名字

out  代表輸出引數

in  代表輸入引數

第二步再建立包體內容:

createi or replace package body pk_test_2 is

  PROCEDURE ETL(CURDATE       out VARCHAR)
  AS
   temp varchar(30);
  BEGIN
   select count(*) into CURDATE from G_INFO;
  END ETL;


procedure test_gs(age2 in varchar)
  as
  csum varchar2(10) :=0;
  begin
     ETL(csum);
   -- insert into GS_TEST(ID_,NAME,SEX,AGE) values(GS_TEST_SEQUENCE.NEXTVAL,sysdate,sysdate,sysdate);
  dbms_output.put_line('date:'|| csum );
   commit;
    end test_gs;
end;

說明:

第一個儲存過程是查詢 pppinfo 表的總是,在賦值給 CURDATE 變數。

在test_gs 儲存過程中  ETL(csum);  這種寫法 就可以直接呼叫第一個儲存過程。 第一個儲存過程引數中 使用了 out,表示輸出引數,故在第二個儲存過程中需要宣告一個變數 csum 用來接收。

dbms_output.put_line 是列印語句,可以使用PL/SQL 工具。在DBMS輸出  選項中 可以看到輸出結果。

如圖


執行此儲存過程

DBMS輸出 :


再把第一個儲存過程裡面的sql語句拿出來測下,看總數是多少


總數也是9 ,說明 同一個包內,儲存過程是可以如此呼叫。