Oracle儲存過程詳細教程

2021-10-02 07:22:32 字數 4408 閱讀 2002

點關注不迷路,歡迎再訪!
精簡部落格內容,盡量已行業術語來分享。

努力做到對每一位認可自己的讀者負責。

幫助別人的同時更是豐富自己的良機。

四.帶有引數的儲存過程

五.in,out引數問題

六.異常寫法

七.迴圈

八.基本正刪改查

create or replace procedure 儲存過程名

asbegin

------

----

----

----

----

----

--end;

注:

在儲存過程(procedure)和函式(function)中沒有區別;

在檢視(view)中只能用as不能用is;

在游標(cursor)中只能用is不能用as。

create or replace procedure mydemo01

asbegin

dbms_output.

put_line

('hello word, my name is stored procedure');

end;

as:關鍵字。begin:關鍵字。dbms_output.put_line(『hello word, my name is stored procedure』); 輸出內容。

end;關鍵字。

3.1 宣告declare關鍵字

declare

begin

mydemo01;

end;

3.2不宣告declare關鍵字
begin

mydemo01;

--在此處也可使用mydemo01()

;完成儲存過程的呼叫

end;

3.3call
call mydemo01()

;--call 儲存過程名可完成呼叫,注意括號不能少

執行的結果如下所示:

create or replace procedure mydemo02

(name in varchar,age in int)

asbegin

dbms_output.

put_line

('name='

||name||

', age='

||age)

;end;

注:在呼叫儲存過程時,如果儲存過程沒有引數,呼叫時括號()可以不帶。

create or replace procedure mydemo04

(name out varchar,age in int)

asbegin

dbms_output.

put_line

('age='

||age)

; select 'ex_sunqi' into name from dual;

end;

declare

name varchar(10

);age int;

begin

mydemo04

(name=>name,age=>25)

; dbms_output.

put_line

('name='

||name)

;end;

注:in代表輸入,out用於輸出,引數預設型別是in型別。執行的結果如下所示:

create or replace procedure mydemo03

asage int;

begin

age:=1

/0; dbms_output.

put_line

(age)

;--異常

exception when others then

dbms_output.

put_line

('error');

end;

call mydemo03()

;

執行的結果如下所示:

7.1while 迴圈

create or replace procedure mydemo5

as n_count number :=0

;begin

while n_count <

5 loop

dbms_output.

put_line

(n_count)

; n_count :

= n_count +1;

end loop;

end;

begin

mydemo5;

end;

執行的結果如下所示:

7.2for迴圈

執行的結果如下所示:

create or replace procedure mydemo07(id

in int, user_name in varchar,pssword in varchar, created_date in

date

,created_by in varchar,updated_date in

date

,updated_by in varchar,is_valid in varchar)

asbegin

insert into t_user_info

values(id

,user_name,pssword,created_date,created_by,updated_date,updated_by,is_valid);--

update

t_user_info t set t.

user_name

='sunqi'

where t.id=

id;--delete

t_user_info t where t.id=

id;

commit;

--提交

end;

begin

mydemo07(3

,'ex_sunqi'

,'666666'

,sysdate

,'ex_sunqi'

,sysdate

,'ex_sunqi'

,'y');

end;

執行的結果如下所示:

ORACLE儲存過程簡明教程

26.1 建立做試驗的表及資料 create table emp ly as select from emp 說明 注意複製表結構及資料不是sql server裡面的語法select into emp ly from emp,這在oracle裡面行不通,當然如果僅複製結構的話使用 create ta...

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...