Oracle 儲存過程

2021-09-08 09:13:42 字數 1487 閱讀 7207

表)

create or replace procedure [()] 

is [declare section]

begin

[exception ];

1.無引數

create or replace procedure inserttb

isbegin

insert into tb values('hongda',10);

commit;

endcall inserttb();

2.有引數

create or replace procedure inserttb2(

country in varchar2 ,

people in number)is

begin

insert into tb values(country,people);

commit;

end inserttb2;

call inserttb2('hongda',23);

3.輸出引數

create or replace procedure inserttb3

( allpeople out number)as

hongda varchar2(20); //宣告變數,

begin

select sum(people) into allpeople from tb;

commit;

end inserttb3;

4.呼叫

oracle中呼叫有兩種,call,exec

exec是sqlplus的命令,只能在sqlplus中使用。和 set serveroutput on 一起用。

call是sql命令,任何工具都可以使用。

注意:

1.引數in代表輸入,out代表輸出

2.儲存過程引數不帶取值範圍

3.變數帶取值範圍,後面接分號

4.用select 。。。into。。。給變數賦值

5.在**中拋異常用 raise+異常名

經常錯誤:

1.在oracle中,資料表別名不能加as

select * from tb as b;        //錯誤

2.在儲存過程中,select某一字段時,後面必須緊跟into,如果select整個記錄,利用游標的話就另當別論了

3.在利用select...into...語法時,必須先確保資料庫中有該條記錄,否則會報出"no data found"異常

Oracle儲存過程呼叫儲存過程

oracle儲存過程呼叫有返回結果集的儲存過程一般用光標的方式,宣告乙個游標,把結果集放到游標裡面,然後迴圈游標 declare newcs sys refcursor cs1 number cs2 number cstype table rowtype table列的個數和newcs返回的個數一樣...

ORACLE儲存過程

自定義函式開始 create or replace function fn wftemplateidget templatecategoryid number,organid number,templatemode number return number istemplateid number i...

Oracle 儲存過程

create or replace procedure p 有就替換,沒有就建立 iscursor c is select from emp for update begin for v emp in c loop if v emp.deptno 10 then update emp2 set sa...