oracle數(shù)據(jù)庫(kù)怎么創(chuàng)建存儲(chǔ)過(guò)程?
網(wǎng)友解答: Oracle存儲(chǔ)過(guò)程包含三部分:過(guò)程聲明,執(zhí)行過(guò)程部分,存儲(chǔ)過(guò)程異常。Oracle存儲(chǔ)過(guò)程可以有無(wú)參數(shù)存儲(chǔ)過(guò)程和帶參數(shù)存儲(chǔ)過(guò)程。 一、無(wú)參程序過(guò)程語(yǔ)法1 create or
Oracle存儲(chǔ)過(guò)程包含三部分:過(guò)程聲明,執(zhí)行過(guò)程部分,存儲(chǔ)過(guò)程異常。
Oracle存儲(chǔ)過(guò)程可以有無(wú)參數(shù)存儲(chǔ)過(guò)程和帶參數(shù)存儲(chǔ)過(guò)程。
一、無(wú)參程序過(guò)程語(yǔ)法
1 create or replace procedure NoParPro
2 as ?;
3 begin
4 ?;
5 exception //存儲(chǔ)過(guò)程異常
6 ?;
7 end;
8
二、帶參存儲(chǔ)過(guò)程實(shí)例
1 create or replace procedure queryempname(sfindno emp.empno%type) as
2 sName emp.ename%type;
3 sjob emp.job%type;
4 begin
5 ....
7 exception
....
14 end;
15
三、 帶參數(shù)存儲(chǔ)過(guò)程含賦值方式
1 create or replace procedure runbyparmeters (isal in emp.sal%type,
sname out varchar,sjob in out varchar)
2 as icount number;
3 begin
4 select count(*) into icount from emp where salisal and job=sjob;
5 if icount=1 then
6 ....
9 else
10 ....
12 end if;
13 exception
14 when too_many_rows then
15 DBMS_OUTPUT.PUT_LINE('返回值多于1行');
16 when others then
17 DBMS_OUTPUT.PUT_LINE('在RUNBYPARMETERS過(guò)程中出錯(cuò)!');
18 end;
19
四、在Oracle中對(duì)存儲(chǔ)過(guò)程的調(diào)用
過(guò)程調(diào)用方式一
1 declare
2 realsal emp.sal%type;
3 realname varchar(40);
4 realjob varchar(40);
5 begin //存儲(chǔ)過(guò)程調(diào)用開始
6 realsal:=1100;
7 realname:='';
8 realjob:='CLERK';
9 runbyparmeters(realsal,realname,realjob); --必須按順序
10 DBMS_OUTPUT.PUT_LINE(REALNAME||' '||REALJOB);
11 END; //過(guò)程調(diào)用結(jié)束
12
過(guò)程調(diào)用方式二
1 declare
2 realsal emp.sal%type;
3 realname varchar(40);
4 realjob varchar(40);
5 begin //過(guò)程調(diào)用開始
6 realsal:=1100;
7 realname:='';
8 realjob:='CLERK';
9 runbyparmeters(sname=realname,isal=realsal,sjob=realjob); --指定值對(duì)應(yīng)變量順序可變
10 DBMS_OUTPUT.PUT_LINE(REALNAME||' '||REALJOB);
11 END; //過(guò)程調(diào)用結(jié)束
請(qǐng)大家多多關(guān)注我的酷米號(hào),謝謝大家!
網(wǎng)友解答:存儲(chǔ)過(guò)程基本語(yǔ)法
create or replace procedure update_emp_sal(
Name in out type, Name in out type, ...
)
isbegin end update_emp_sal;