剛開始學習儲存過程,寫下自己的一點總結,參考了這位大神的部落格
首先建乙個表,名為t_2018jjr
表結構:
一、無引數的
create or replace procedure firstpro
as countpro number(3);
begin
select count(*) into countpro from t_2018jjr;
dbms_output.put_line('總天數'||countpro);
end firstpro;
執行:call firstpro();或者begin firstpro(); end ; 或者找到這個儲存過程 右鍵 test
執行結果顯示在output視窗
二 有輸入輸出引數(輸入用in 輸出用out,只能實現輸出為1條資料的查詢)
--帶輸入輸出引數的
create or replace procedure senpro(tname in varchar2,tdate out varchar2)
as begin
select count(t_date) into tdate from t_2018jjr where t_name=tname;
dbms_output.put_line('日期'||tdate);
end senpro;
--呼叫
declare
cname varchar(10);
cdate varchar(10);
begin
cname:='春節';
cdate:='';
senpro(cname,cdate);
end;
也可以找到該儲存過程 右鍵 test 進行測試
結果:
三 有輸入輸出引數 輸出引數為游標(這樣能實現輸出n條資料的情況)
create or replace procedure testpro(tname in varchar2,classt_2018jjr out sys_refcursor)
as type ref_cursor_type is ref cursor;--定義乙個動態游標
t_2018jjrs ref_cursor_type;--定義節假日集合為乙個游標型別
t_2018jjr_row t_2018jjr%rowtype;--定義節假日型別,型別為t_2018jjr錶行型別
begin
open t_2018jjrs for select * from t_2018jjr where t_name=tname;--開啟游標
classt_2018jjr :=t_2018jjrs;----把查詢結果賦值給輸出變數
loop
fetch classt_2018jjr into t_2018jjr_row;
exit when classt_2018jjr%notfound; --迴圈到空跳出迴圈
dbms_output.put_line('日期'||t_2018jjr_row.t_date);
end loop;
end testpro;
--呼叫
declare
cname varchar(10);
ct_2018jjr sys_refcursor;
begin
cname:='春節';
testpro(cname,ct_2018jjr);
end;
結果:
暫時學習到這兒。。。
關於oracle的儲存過程以及呼叫。
這篇是我真正意義上的第一篇部落格,之前一直在oracle中的procedure中建立儲存過程,不過一直有錯,所以上網查了一下,發現儲存過程可以直接在comment windows中直接編寫就行了。首先看看下面這個例子 create or replace procedure test is 這裡是要定...
Oracle分頁儲存過程以及C 呼叫
1 分頁儲存過程 首先需要新建乙個包,至於為什麼要這麼做,我沒有深究,如有童鞋知道的話,只會一聲哈 建立包 create or replace package pck system is type t cursor is ref cursor end pck system 建立儲存過程 create...
Oracle儲存過程呼叫儲存過程
oracle儲存過程呼叫有返回結果集的儲存過程一般用光標的方式,宣告乙個游標,把結果集放到游標裡面,然後迴圈游標 declare newcs sys refcursor cs1 number cs2 number cstype table rowtype table列的個數和newcs返回的個數一樣...