帶引數的儲存過程一般不在儲存過程中commit或者rollback,而是在呼叫儲存過程之後再提交或回滾,這樣能把儲存過程封裝到乙個事務中。舉例:為指定的員工漲100元的工資,列印漲前和漲後的工資
如果帶參,需要指定是輸入引數還是輸出引數
create
orreplace
procedure raisesalary(eno in number)as
---定義乙個變數儲存漲前的薪水,引用emp中sal的型別作為psal的型別
psal emp.sal
%type;
begin
---得到員工漲前的薪水
select sal into psal from emp where empno=
eno; --
-給該員工漲100
update emp set sal=sal+
100where empno=
eno;
---需不需要commit?
---注意:一般不在儲存過程或者儲存函式中 commit和rollback
---列印漲前和漲後的工資
dbms_output.put_line(
'漲前:
'||psal||
'漲後:
'||(psal+
100));
end;
/一般在呼叫儲存過程或者函式的時候再commit,這樣可以保證所有執行是在同乙個事物中進行的
如:begin
raisesalary(
7839
); raisesalary(
7566
);
commit
;end
;/
如果是命令視窗就用exec 儲存過程名,舉個栗子:
1.如果是命令視窗就用exec 儲存過程名,舉個栗子:
exec
procedure
;
--procedure是儲存過程名
2.如果是pl/sql視窗就用 begin 儲存過程名 end; 舉個栗子:
begin
procedure
;
--procedure是儲存過程名
end
;
3.如果是程式中呼叫就用 call 儲存過程名 ,舉個栗子:
hibernatedao.excutesqlupdate("");//儲存過程proc_stuinfo
Oracle帶引數的儲存過程
一 需求 為指定的員工,漲100塊錢的工資 並且列印漲前和漲後的薪水。二 帶引數儲存過程 給指定的員工漲 100,並且列印漲前和漲後的薪水 如何呼叫 begin raisesalay 7839 raisesalay 7566 commit end create orreplace procedure...
Oracle 帶引數的儲存過程
1 建立儲存過程 create procedure updatedemo ageparam in number asbegin update demo set age ageparam commit end 2 傳參執行 begin updatedemo 20 end 3 為儲存過程設定引數的預設值...
儲存過程帶in引數
set ansi nulls on set quoted identifier on goalter procedure dbo testlist userid nvarchar 4000 asdeclare search array nvarchar 100 begin set search ar...