oracle 儲存過程學習
幾個注意點:
1、在oracle中,資料表別名不能加as.
2、在儲存過程中,select某一欄位時,後面必須緊跟into,如果select整個記錄,利用遊標的話就另當別論了。
3、在利用select ....into...語法時,必須先確保資料庫中有該條記錄,否則會報出“NO Data found"異常。
4、在儲存過程中,別名不能和欄位名稱相同,否則雖然編譯可以通過,但在執行階段會報錯。
商業規則和業務邏輯可以通過程式儲存在oracle中,這個程式就是程式過程。
儲存過程是SQL,PL/SQL,JAVA 語句的組合,它使你能將執行商業規則的程式碼從你的應用程式中移動到資料庫。這樣的結果就是,程式碼儲存一次但是能夠被多個程式使用。
要建立一個過程物件,必須有create procedure系統許可權。如果這個過程物件需要被其他的使用者使用,那麼你必須有create any procedure許可權。執行procedure的時候,可能需要execute許可權。或者execute any procedure許可權。
如果單獨賦予許可權,例:
grant execute my_procedure to WW;
儲存過程(procedure)和函式(function)的區別。
function 有返回值,並且可以直接在query中引用function或者使用function的返回值。
本質上沒有區別,都是PL/SQL程式,都可以有返回值。最根本的區別是:儲存過程是命令,而函式是表示式的一部分。比如:
package是function,procedure,variables和sql 語句的組合。package允許多個procedure使用同一個變數和遊標。
sql程式碼:
create procedure sam.credit (acc_no in number,amount in number) as
begin
update accounts
set balance = balance + account
where account_id = acc_no;
end;
IN,out,in out 用來修飾引數。
IN 表示這個變數必須被呼叫者賦值然後傳入到procedure進行處理。
out 表示procedure 通過這個變數將值傳回給呼叫者。
IN OUT 則是這兩種的組合。
authid 代表兩種許可權:
定義者許可權(difiner right 預設),執行者許可權 (invoker right)。
定義者許可權說明這個procedure中涉及的表,檢視等物件所需要的許可權只要定義者擁有許可權的話就可以訪問。
執行者許可權需要呼叫這個procedure的使用者擁有相關表和物件的許可權。
oracle 儲存過程的基本語法
1、基本結構
create or replace procedure 儲存過程名字
(引數 1 IN number,
引數 2 IN number)
as
變數 1 integer :=0;
變數2 date;
begin
end 儲存過程名字
2、select into statement
將select 查詢的結果存入到變數中,可以同時將多個列儲存多個變數中,必須有一條記錄,否則丟擲異常(如果沒有記錄丟擲 no_data_found)
begin
select col1,col2 into 變數1,變數2 from typestruct where xxx;
exception
when no_data_found then
*****;
end;
...........
3、 IF 判斷
if v_test=1 then
begin
do something
end;
endif;
4、while迴圈
while v_test=1 loop
begin
****
end;
end loop;
5、變數賦值
v_test := 123;
6、用for in 使用 cursor
is
cursor cur is select * from ***;
begin
for cur_result cur loop
begin
v_sum :=cur_result.列名1+cur_result.列名 2
end;
end loop;
end;
1、在oracle中,資料表別名不能加as.
2、在儲存過程中,select某一欄位時,後面必須緊跟into,如果select整個記錄,利用遊標的話就另當別論了。
3、在利用select ....into...語法時,必須先確保資料庫中有該條記錄,否則會報出“NO Data found"異常。
4、在儲存過程中,別名不能和欄位名稱相同,否則雖然編譯可以通過,但在執行階段會報錯。
商業規則和業務邏輯可以通過程式儲存在oracle中,這個程式就是程式過程。
儲存過程是SQL,PL/SQL,JAVA 語句的組合,它使你能將執行商業規則的程式碼從你的應用程式中移動到資料庫。這樣的結果就是,程式碼儲存一次但是能夠被多個程式使用。
要建立一個過程物件,必須有create procedure系統許可權。如果這個過程物件需要被其他的使用者使用,那麼你必須有create any procedure許可權。執行procedure的時候,可能需要execute許可權。或者execute any procedure許可權。
如果單獨賦予許可權,例:
grant execute my_procedure to WW;
儲存過程(procedure)和函式(function)的區別。
function 有返回值,並且可以直接在query中引用function或者使用function的返回值。
本質上沒有區別,都是PL/SQL程式,都可以有返回值。最根本的區別是:儲存過程是命令,而函式是表示式的一部分。比如:
package是function,procedure,variables和sql 語句的組合。package允許多個procedure使用同一個變數和遊標。
sql程式碼:
create procedure sam.credit (acc_no in number,amount in number) as
begin
update accounts
set balance = balance + account
where account_id = acc_no;
end;
IN,out,in out 用來修飾引數。
IN 表示這個變數必須被呼叫者賦值然後傳入到procedure進行處理。
out 表示procedure 通過這個變數將值傳回給呼叫者。
IN OUT 則是這兩種的組合。
authid 代表兩種許可權:
定義者許可權(difiner right 預設),執行者許可權 (invoker right)。
定義者許可權說明這個procedure中涉及的表,檢視等物件所需要的許可權只要定義者擁有許可權的話就可以訪問。
執行者許可權需要呼叫這個procedure的使用者擁有相關表和物件的許可權。
oracle 儲存過程的基本語法
1、基本結構
create or replace procedure 儲存過程名字
(引數 1 IN number,
引數 2 IN number)
as
變數 1 integer :=0;
變數2 date;
begin
end 儲存過程名字
2、select into statement
將select 查詢的結果存入到變數中,可以同時將多個列儲存多個變數中,必須有一條記錄,否則丟擲異常(如果沒有記錄丟擲 no_data_found)
begin
select col1,col2 into 變數1,變數2 from typestruct where xxx;
exception
when no_data_found then
*****;
end;
...........
3、 IF 判斷
if v_test=1 then
begin
do something
end;
endif;
4、while迴圈
while v_test=1 loop
begin
****
end;
end loop;
5、變數賦值
v_test := 123;
6、用for in 使用 cursor
is
cursor cur is select * from ***;
begin
for cur_result cur loop
begin
v_sum :=cur_result.列名1+cur_result.列名 2
end;
end loop;
end;
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/22969361/viewspace-1204792/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Oracle儲存過程學習Oracle儲存過程
- 儲存過程學習教材儲存過程
- 【Mysql】Mysql儲存過程學習MySql儲存過程
- oracle10g_儲存過程學習小記Oracle儲存過程
- Oracle儲存過程Oracle儲存過程
- Mysql 5.7儲存過程的學習MySql儲存過程
- Oracle儲存過程乾貨(一):儲存過程基礎Oracle儲存過程
- oracle 基礎溫習之 儲存過程Oracle儲存過程
- Oracle儲存過程-1Oracle儲存過程
- oracle的儲存過程Oracle儲存過程
- Oracle儲存過程例子Oracle儲存過程
- Oracle建立儲存過程Oracle儲存過程
- oracle plsql儲存過程OracleSQL儲存過程
- ORACLE 儲存過程示例Oracle儲存過程
- PLSQL學習-【7儲存過程、函式】SQL儲存過程函式
- SQL學習-隨機數,儲存過程SQL隨機儲存過程
- 從sybase的儲存過程轉向oracle的儲存過程儲存過程Oracle
- 原創:oracle 儲存過程Oracle儲存過程
- oracle 儲存過程批次提交Oracle儲存過程
- [Flashback]Oracle flashback儲存過程Oracle儲存過程
- oracle的儲存過程格式Oracle儲存過程
- java 呼叫oracle 儲存過程JavaOracle儲存過程
- oracle--08儲存過程Oracle儲存過程
- 學習儲存過程時寫的個例子儲存過程
- 學習一個簡單的儲存過程儲存過程
- oracle儲存過程書寫格式Oracle儲存過程
- Oracle Pl/SQL 之 儲存過程OracleSQL儲存過程
- C#呼叫 oracle儲存過程C#Oracle儲存過程
- Oracle儲存過程基本語法Oracle儲存過程
- [Procedure]Oracle之分頁儲存過程Oracle儲存過程
- oracle 儲存過程遊標的使用Oracle儲存過程
- C#呼叫Oracle儲存過程C#Oracle儲存過程
- java中呼叫ORACLE儲存過程JavaOracle儲存過程
- 用java呼叫oracle儲存過程JavaOracle儲存過程
- Oracle 基礎 ----procedure(儲存過程)Oracle儲存過程
- oracle父儲存過程呼叫子儲存過程procedure與輸出引數Oracle儲存過程
- MySQL儲存過程詳解 mysql 儲存過程MySql儲存過程
- 儲存過程儲存過程