oracle存儲過程:簡單入門
一、定義
存儲過程是一組爲了完成特定功能的SQL語句,經編譯後存儲在數據庫中。
點擊查看優缺點。
二、存儲過程簡單入門
***第一個存儲過程:打印hello word, my name is stored procedure內容***
create or replace procedure myDemo01
as
begin
dbms_output.put_line('hello word, my name is stored procedure');
end;
create or replace procedure:關鍵字用來創建或覆蓋一個原有的存儲過程。
myDemo01:自定義的存儲過程的名字。
as:關鍵字。
注:
在存儲過程(PROCEDURE)和函數(FUNCTION)中沒有區別;
在視圖(VIEW)中只能用AS不能用IS;
在遊標(CURSOR)中只能用IS不能用AS。
begin:關鍵字。
dbms_output.put_line(‘hello word, my name is stored procedure’); 輸出內容。
**end;**關鍵字。
<span style="font-size: 15px"><strong>存儲過程的調用</strong></span>
declare<br>begin
myDemo01;
end;
begin
myDemo01;--在此處也可使用myDemo01();完成存儲過程的調用
end;
兩種方式可以完成存儲過程的調用,分別爲聲明declare關鍵字和不聲明declare關鍵字。執行的結果如下所示
第二個存儲過程:變量聲明,賦值
create or replace procedure myDemo02
as
name varchar(10);--聲明變量,注意varchar需要指定長度
age int;
begin
name:='xiaoming';--變量賦值
age:=18;
dbms_output.put_line('name='||name||', age='||age);--通過||符號達到連接字符串的功能
end;
第三個存儲過程:帶有參數的存儲過程
create or replace procedure myDemo03(name in varchar,age in int)
as
begin
dbms_output.put_line('name='||name||', age='||age);
end;
begin
myDemo03('xiaoming',18);
end;
在調用存儲過程時,如果存儲過程沒有參數,調用時括號()可以不帶。
存儲過程帶參數需要注意參數的傳遞參數時的一致性,按順序依次傳遞。
第四個存儲過程:實參形參問題
create or replace procedure myDemo04(name in varchar,age in int)
as
begin
dbms_output.put_line('name='||name||', age='||age);
end;
declare
name varchar(10);
age int;
begin
name:='xiaoming';
age:=18;
myDemo04(name=>name,age=>18);--此時不能myDemo04(name=>name,18),不能完成調用。
end;
注;在調用存儲過程時,=>前面的變量爲存儲過程的形參且必須於存儲過程中定義的一致,而=>後的參數爲實際參數。當然也不可以不定義變量保存實參
第五個存儲過程:in,out參數問題
create or replace procedure myDemo05(name out varchar,age in int)
as
begin
dbms_output.put_line('age='||age);
select 'xiaoming' into name from dual;
end;
declare
name varchar(10);
age int;
begin
myDemo05(name=>name,age=>10);
dbms_output.put_line('name='||name);
end;
注:in代表輸入,out用於輸出
第六個存儲過程:異常問題,執行結果見下
create or replace procedure mydemo0006
as
age int;
begin
age:=10/0;
dbms_output.put_line(age);
exception when others then
dbms_output.put_line('error');
end;
begin
mydemo0006();
end;