oracle儲存過程的結構包含三部分:1、過程宣告;2、執行過程部分;3、儲存過程異常,該部分可省略,如果要增強指令碼的容錯性和偵錯的方便性那就寫上例外處理。
本教學操作環境:Windows7系統、Oracle 11g版、Dell G3電腦。
什麼是儲存過程
儲存過程: 百度百科上是這樣解釋的,儲存過程(Stored Procedure)是在大型資料庫系統中,一組為了完成特定功能的SQL 語句集,儲存在資料庫中,經過第一次編譯後再次呼叫不需要再次編譯,使用者通過指定儲存過程的名字並給出引數(如果該儲存過程帶有引數)來呼叫儲存過程。
簡單的說就是專門幹一件事一段sql語句。
可以由資料庫自己去呼叫,也可以由java程式去呼叫。
在oracle資料庫中儲存過程是procedure。
儲存過程結構
(1)基本結構
Oracle儲存過程包含三部分:過程宣告,執行過程部分,儲存過程異常(可寫可不寫,要增強指令碼的容錯性和偵錯的方便性那就寫上例外處理)
(2)無參儲存過程
/** name_procedure就是自己自定義的儲存過程名 */ create or replace procedure name_procedure AS/IS 變數名1 資料型別; 變數名2 資料型別; BEGIN --要處理的業務邏輯 EXCEPTION --儲存過程異常 END name_procedure;
(3).有參儲存過程
普通引數儲存過程
/* age 型別為number 初始化為20; */ CREATE OR REPLACE PROCEDURE name_procedure (param1 TYPE) AS/IS name varchar(20); age number :=20; BEGIN --業務處理..... END ;
帶引數的儲存過程並且進行賦值
CREATE OR REPLACE PROCEDURE 儲存過程名稱( s_no in varchar, s_name out varchar, s_age number) AS total NUMBER := 0; BEGIN SELECT COUNT(1) INTO total FROM student s WHERE s.age=s_age; dbms_output.put_line('符合該年齡的學生有'||total||'人'); EXCEPTION WHEN too_many_rows THEN DBMS_OUTPUT.PUT_LINE('返回值多於1行'); END
其中引數IN表示輸入引數,是引數的預設模式。
OUT表示返回值引數,型別可以使用任意Oracle中的合法型別。
OUT模式定義的引數只能在過程體內部賦值,表示該引數可以將某個值傳遞迴撥用他的過程
IN OUT表示該引數可以向該過程中傳遞值,也可以將某個值傳出去
第7行:查詢語句,把引數s_age作為過濾條件,INTO關鍵字,把查到的結果賦給total變數。
第8行:輸出查詢結果,在資料庫中「||」用來連線字串
第9—11行:做例外處理
儲存過程語法
(1)運運算元
(2)SELECT INTO STATEMENT語句
將查詢結果賦值給一個變數或多個變數
需求:查出成績為100分的那個學生的姓名,年齡,籍貫
CREATE OR REPLACE PROCEDURE DEMO_CDD1 IS s_name VARCHAR2; --學生名稱 s_age NUMBER; --學生年齡 s_address VARCHAR2; --學生籍貫 BEGIN --給單個變數賦值 SELECT student_address INTO s_address FROM student where student_grade=100; --給多個變數賦值 SELECT student_name,student_age INTO s_name,s_age FROM student where student_grade=100; --輸出成績為100分的那個學生資訊 dbms_output.put_line('姓名:'||s_name||',年齡:'||s_age||',籍貫:'||s_address); END
(3)選擇語句
//if 後面一定要新增THEN 相當於Java中的 大括號 IF s_sex=1 THEN dbms_output.put_line('這個學生是男生'); ELSE IF THEN dbms_output.put_line('這個學生是女生'); ELSE dbms_output.put_line('這個學生性別錯誤'); END IF
(4)迴圈語句
a.基本回圈
LOOP IF 表示式 THEN EXIT; END IF END LOOP;
b.while迴圈
WHILE 表示式 LOOP dbms_output.put_line('haha'); END LOOP;
c.for迴圈
//a 1 到 20 範圍 FOR a in 10 .. 20 LOOP dbms_output.put_line('value of a: ' || a); END LOOP;以上就是oracle儲存過程的基本結構包含哪些的詳細內容,更多請關注TW511.COM其它相關文章!