Oracle10g下簡單儲存過程編寫

2021-08-30 01:55:43 字數 2051 閱讀 7139

經過個把小時的折騰,寫了乙個簡單的儲存過程。一直都是改別人的儲存過程,沒有自己

寫過,這樣很不好。寫了乙個簡單功能的:

有判斷選擇,迴圈遍歷游標。

儲存過程注意點:

1.注意其基本的語法。

2.關注游標,在10g中定義游標一般都使用sys_refcursor

而cursor只是用來在申明部分進行初始化,而sys_refcursor可以直接

使用。3.%found %notfound %isopen等游標屬性

/***@date:2009-06-16**/

create or replace procedure sp_test(strflag in string,

cur_fconsign outsys_refcursor,

cur_fee outsys_refcursor,

intcount out integer) as

fcsgconsignid varchar2(200); --委託表id

fcsgconsignno varchar2(200); --委託表no

i integer;

--定義中間游標

cursor cur_temp is

select fc.fcsg_consign_id, fc.fcsg_consign_no

from fconsign fc

where rownum <= 5;

begin

--如果傳的標誌為1,則返回cur_fconsign

if strflag = 0 then

select count(*) into intcount from fconsign;

dbms_output.put_line(intcount);

--返回fconsign表的所有資料

open cur_fconsign for

select fc.fcsg_consign_id, fc.fcsg_consign_no

from fconsign fc

where rownum <= 100;

elsif strflag = 1 then

select count(*) into intcount from fexpense;

dbms_output.put_line(intcount);

--返回費用的資料fexpenses

open cur_fee for

select fe.fexp_expense_id, fe.fexp_bill_no

from fexpense fe

where rownum <= 5;

end if;

--開啟游標

open cur_temp;

--把游標的某行值賦值給變數

fetch cur_temp

into fcsgconsignid, fcsgconsignno;

dbms_output.put_line('first' || fcsgconsignid || fcsgconsignno);

dbms_output.put_line('------------------------');

--列印委託表中的前一百條資料

--遍歷游標

i := 1;

while cur_temp%found loop

fetch cur_temp

into fcsgconsignid, fcsgconsignno;

dbms_output.put_line(i);

dbms_output.put_line(fcsgconsignid || fcsgconsignno);

i := i + 1;

end loop;

--關閉游標

if cur_temp%isopen then

close cur_temp;

end if;

end sp_test;

凡事由簡入難~~~~基礎很重要,要不停的補充。

AIX下字元介面安裝oracle 10g過程

三 執行安裝oracle 1 以root執行 rootpre.sh 2 轉到oracle 10g安裝介質目錄下,用oracle使用者執行runinstaller cd disk1 runinstaller silent responsefile disk1 response myinst.rsp 表...

oracle10g 簡單的oracle程式設計語句塊

pl sql pl sql塊結構 分支語句 迴圈語句 異常處理 記錄的使用 plsql塊結構 declare exception end 最後乙個表示執行有關操作 變數的宣告 定變數名稱 定正確的資料型別 定義變數 控制變數作用範圍 變數由字母開頭 可以包含數字 下劃線 名字長度 1 30 大小寫不...

Oracle 10g儲存過程學習一

1 建立儲存過程 無引數 create or replace procedure out time isbegin dbms output.put line systimestamp end 呼叫儲存過程 exec out time call out time 2 建立儲存過程 有引數,且顯示指定為...