乙個簡單的儲存過程

2022-09-19 14:48:16 字數 3494 閱讀 4390

建立乙個簡單的儲存過程

其中涉及到是基本的傳參,定義引數,引數賦值,條件語句,迴圈語句,用游標遍歷等基本語法

--建立乙個儲存過程 

create or replace procedure addgoods( -- 傳入兩個變數,乙個輸入變數,乙個輸出變數,輸出變數用來作為返回值

gname1 user_table.user_skey%type , param1 out user_table.user_skey%type ) as -- 把變數的型別跟表中字段型別保持一致

id1 number(10); -- 定義兩個沒有初始化的變數

i number(10) ;

cursor ee(v_user_skey number) is select user_skey from user_table where user_skey = v_user_skey; --游標 ,帶引數 游標的引數一定不能跟表中的字段一樣,且不區分大小寫

begin -- **處理塊 , 用begin end包起來

begin -- 處理異常 要把需要處理的**塊用begin end包起來,在**塊中緊跟exception處理

select user_table.user_skey into id1 from user_table where user_table.user_skey = gname1;

exception

when no_data_found then

dbms_output.put_line('不存在任何記錄'); -- db的輸出語句,在output標籤下顯示輸出資訊

rollback;

raise;

end;

if id1 = 45 then -- 判斷語句

begin

dbms_output.put_line(gname1 || '的id是45');

end;

end if;

if id1 <> 45 then

begin

dbms_output.put_line(gname1 || '的id是'||id1);

end;

end if;

param1:= id1; -- 變數賦值

i:= 1;

while i < 10 loop -- while 迴圈

begin

dbms_output.put_line('i的值是:' || i);

i:= i + 1;

end;

end loop;

i:= 1;

for vvv in ee(999) loop -- for迴圈,使用游標

dbms_output.put_line('i的值為:' || i);

i:= i + 1;

dbms_output.put_line('存在的id值有:' || vvv.user_skey); -- 這一行必須有,迴圈體不能為空

end loop;

dbms_output.put_line('111111');

end addgoods;

-- 呼叫儲存過程

begin

addgoods(999);

end;

-- 使用**塊呼叫儲存過程 只有這個呼叫有效,輸出引數必須是乙個變數

declare

user_skey number;

user_id number ;

begin

user_skey:= 999;

addgoods(user_skey,user_id); -- 傳入兩個引數,乙個輸入引數,乙個輸出引數,輸入引數必須初始化,輸出引數是否初始化無所謂

dbms_output.put_line('返回的值是:' || user_id);

end;

-- 在sqlcommand中執行

exec addgoods(user_skey);

create or replace procedure addgoods(

gname1 user_table.user_skey%type) as

id1 number(10);

i number(10) ;

cursor ee(v_user_skey number) is select user_skey from user_table where user_skey = v_user_skey; --游標 ,帶引數

begin

begin -- 處理異常 要把需要處理的**塊用begin end包起來,在**塊中緊跟exception處理

select user_table.user_skey into id1 from user_table where user_table.user_skey = gname1;

exception

when no_data_found then

dbms_output.put_line('不存在任何記錄');

rollback;

raise;

end;

if id1 = 45 then

begin

dbms_output.put_line(gname1 || '的id是45');

end;

end if;

if id1 <> 45 then

begin

dbms_output.put_line(gname1 || '的id是'||id1);

end;

end if;

i:= 1;

while i < 10 loop

begin

dbms_output.put_line('i的值是:' || i);

i:= i + 1;

end;

end loop;

i:= 1;

for vvv in ee(999) loop

dbms_output.put_line('i的值為:' || i);

i:= i + 1;

dbms_output.put_line('存在的id值有:' || vvv.user_skey); -- 這一行必須有,迴圈體不能為空

end loop;

dbms_output.put_line('111111');

end addgoods;

-- 呼叫儲存過程

begin

addgoods(999);

end;

-- 使用**塊呼叫儲存過程

declare

user_skey number;

user_id number ;

begin

user_skey:= 999;

addgoods(user_skey);

end;

-- 在sqlcommand中執行

exec addgoods(user_skey);

乙個簡單的儲存過程

set quoted identifier off goset ansi nulls on goalter procedure list gz p zgh int null as begin if p zgh is null begin print 請輸入乙個職工號 return end else ...

乙個簡單的儲存過程

建立物件 set oconn server.createobject adodb.connection set ors server.createobject adodb.recordset set ocmd server.createobject adodb.command 資料連線 strcon...

乙個簡單oracle儲存過程

本儲存過程實現建立表和刪除表,並應用到日期函式sysdate,add months,pl sql devoleper 8.0開發 create or replace procedure p create history table isv sql string 31000 begin for i i...