oracle儲存過程的基本結構包含哪些

2022-03-02 19:01:46

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)運運算元

1.png

(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其它相關文章!