Oracle 基礎 ----procedure(儲存過程)
Oracle 基礎 ----procedure(儲存過程)
儲存過程是一種命名pl/sql程式塊,它可以被賦予引數,儲存在資料庫中,可以被使用者呼叫,由於儲存過程是已經編譯好的程式碼,所以在呼叫的時候不必再進行編譯,從而提高程式的執行效率。
同時,使用儲存過程可以實現程式的模組化設計。
例子:
Create procedure insertmer as
Begin
Inser into mar values(‘’);
Exception
When dup_val_on_index then
Dbms_output.put_line(‘duplicate’);
When others then
Dbms_output.put_line(‘others’);
End insertmer;
儲存過程呼叫:
Ser serveroutput on
Begin
Insertmer;
End;
或者直接執行:
Execute Insertmer;
修改儲存過程使用:
Create or replace
引數:
In,out, in out.
該型別的引數值由呼叫者傳入,並且只能夠儲存過程讀取。
例子:
Create or replace procedure insermer(
P_id in varchar2,
P_name in varchar2,
P_price in number,
P_place in varchar2) as
Begin
Null;
Exception
Null;
end
在帶引數的變數中,不能固定引數的長度
在下面這個過程中,通過out引數返回值,表示在呼叫它時必須提供能夠接收返回值的變數。
SYS AS SYSDBA on 2008-03-01 10:28:39 at ORCL>edit
已將 file afiedt.buf 寫入
1 create or replace procedure searchpro(
2 id in number,
3 o_name out number,
4 o_price out number) is
5 begin
6 o_name:=id;
7 o_price:=id+1;
8 exception
9 when others then
10 dbms_output.put_line('o_name:'||o_name||' oprice:'||'oprice');
11* end searchpro;
SYS AS SYSDBA on 2008-03-01 10:28:55 at ORCL>/
已建立程式.
SYS AS SYSDBA on 2008-03-01 10:28:58 at ORCL>variable name number;
SYS AS SYSDBA on 2008-03-01 10:29:10 at ORCL>variable price number;
SYS AS SYSDBA on 2008-03-01 10:29:17 at ORCL>exec searchpro(1,name,price);
BEGIN searchpro(1,name,price); END;
*
ERROR 在行 1:
ORA-06550: line 1, column 19:
PLS-00201: identifier 'NAME' must be declared
ORA-06550: line 1, column 7:
PL/SQL: Statement ignored
SYS AS SYSDBA on 2008-03-01 10:29:32 at ORCL>exec searchpro(1,:name,:price);
PL/SQL 程式順利完成.
SYS AS SYSDBA on 2008-03-01 10:30:03 at ORCL>print name;
NAME
----------
1
SYS AS SYSDBA on 2008-03-01 10:30:11 at ORCL>print price
PRICE
----------
2
SYS AS SYSDBA on 2008-03-01 10:30:15 at ORCL>create or replace procedure swap(p_num1 in out nu
mber,p_num2 in out number) is
2 var_temp number;
3 begin
4 var_temp:=p_num1;
5 p_num1:=p_num2;
6 p_num2:=var_temp;
7 end swap;
8 /
已建立程式.
SYS AS SYSDBA on 2008-03-01 10:41:30 at ORCL>set serveroutput on
SYS AS SYSDBA on 2008-03-01 10:41:37 at ORCL>declare
2 var_max number:=20;
3 var_min number:=28;
4 begin
5 if var_max
6 swap(var_max,var_min);
7 end if;
8 dbms_output.put_line('var_max='||var_max);
9 dbms_output.put_line('var_min='||var_min);
10 end;
11 /
var_max=28
var_min=20
在使用in out 引數時,必須為in out 引數提供變數,不可以提供常量,因為out .
在使用int 引數時候,可以使用default 預設值,而在 out,in out 引數時,不能使用default 預設值。
區域性變數 和 子過程
同匿名pl/sql 程式塊一樣,過程也可以定義區域性變數
SYS AS SYSDBA on 2008-03-01 10:44:55 at ORCL>create or replace procedure updatepro(p_Id in num
ber,p_rebate in number) is
2 var_rebate number;
3 procedure checkvalue(rebate in out number) is
4 begin
5 if rebate=null then
6 rebate:=1;
7 elsif rebate<0 then
8 rebate:=0.1;
9 elsif rebate>1 then
10 rebate:=1;
11 end if;
12 end checkvalue;
13 begin
14 var_rebate:=p_rebate;
15 checkvalue(var_rebate);
16 dbms_output.put_line('var_rebate:'||var_rebate);
17 end updatepro;
18 /
已建立程式.
SYS AS SYSDBA on 2008-03-01 10:56:52 at ORCL>set serveroutput on
SYS AS SYSDBA on 2008-03-01 10:57:37 at ORCL>begin
2 updatepro(1,2);
3 end;
4 /
var_rebate:1
PL/SQL 程式順利完成.
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/701141/viewspace-198165/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- [Procedure]Oracle之分頁儲存過程Oracle儲存過程
- Oracle儲存過程乾貨(一):儲存過程基礎Oracle儲存過程
- oracle父儲存過程呼叫子儲存過程procedure與輸出引數Oracle儲存過程
- SQL 建立儲存過程PROCEDURESQL儲存過程
- oracle 基礎溫習之 儲存過程Oracle儲存過程
- PL/SQL 05 儲存過程 procedureSQL儲存過程
- mysql 儲存過程 procedure 批次建表MySql儲存過程
- SQL Server基礎:儲存過程SQLServer儲存過程
- oracle procedure 儲存過程輸入及輸出in out示例Oracle儲存過程
- mysql檢視儲存過程show procedure status;MySql儲存過程
- MySQL入門--儲存過程(PROCEDURE)和儲存函式(FUNCTION)MySql儲存過程儲存函式Function
- SQL Server基礎之儲存過程SQLServer儲存過程
- oracle儲存過程(procedure)中執行動態SQL小記Oracle儲存過程SQL
- Oracle儲存過程Oracle儲存過程
- mysql儲存過程procedure、函式function的用法MySql儲存過程函式Function
- Mysql儲存過程基礎(案例+程式碼)MySql儲存過程
- MyBatis基礎:MyBatis呼叫儲存過程(6)MyBatis儲存過程
- oracle底層字典表obj$及source$與儲存過程procedure系列一OracleOBJ儲存過程
- oracle底層字典表obj$及source$與儲存過程procedure系列二OracleOBJ儲存過程
- oracle底層字典表obj$及source$與儲存過程procedure系列三OracleOBJ儲存過程
- oracle底層字典表obj$及source$與儲存過程procedure系列四OracleOBJ儲存過程
- oracle底層字典表obj$及source$與儲存過程procedure系列五OracleOBJ儲存過程
- oracle plsql package_body_procedure_構建語法_sp_儲存過程OracleSQLPackage儲存過程
- oracle procedure儲存過程(pl/sql)_使用declare cursor_begin end巢狀Oracle儲存過程SQL巢狀
- Oracle儲存過程-1Oracle儲存過程
- oracle的儲存過程Oracle儲存過程
- Oracle儲存過程例子Oracle儲存過程
- Oracle建立儲存過程Oracle儲存過程
- oracle plsql儲存過程OracleSQL儲存過程
- ORACLE 儲存過程示例Oracle儲存過程
- 從sybase的儲存過程轉向oracle的儲存過程儲存過程Oracle
- 【實驗】【PROCEDURE】一個最簡單的oracle儲存過程"proc_helloworld"Oracle儲存過程
- procedure儲存過程呼叫dba字首的字典dba_objects儲存過程Object
- 通過v$access檢視正在執行的儲存過程procedure儲存過程
- 原創:oracle 儲存過程Oracle儲存過程
- oracle 儲存過程批次提交Oracle儲存過程
- oracle 儲存過程學習Oracle儲存過程
- [Flashback]Oracle flashback儲存過程Oracle儲存過程