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 ,說明 同一個包內,儲存過程是可以如此呼叫。