1. 程式人生 > >mysql 帶有無引數的儲存過程

mysql 帶有無引數的儲存過程

SQL中呼叫儲存過程語句:call procedure_name();

注:呼叫時”()”是不可少的,無論是有引數還是無引數.

定義對資料庫儲存過程的呼叫時
1、無引數儲存過程:{call procedure_name}
2、僅有輸入引數的儲存過程:{call procedure_name(?,?…)}。
這裡?表示輸入引數,建立儲存過程時用in表示輸入引數
3、僅有輸出引數的儲存過程:{call procedure_name(?,?…)}。
這裡的?表示輸出引數,建立儲存過程時用out表示輸出引數
4、既有輸入引數又有輸出引數的儲存過程{call procedure_name(?,?…)}。
這裡的?有表示輸出引數的,也有表示輸入引數的

下面將會對這4種情況分別舉出例項!!!
1、無引數儲存過程
複製程式碼

CREATE OR REPLACE PROCEDURE stu_proc AS
–宣告語句段
v_name VARCHAR2(20);
BEGIN
–執行語句段
SELECT o.sname INTO v_name FROM student o WHERE o.id=4;
dbms_output.put_line(v_name);
EXCEPTION
–異常處理語句段
WHEN NO_DATA_FOUND THEN dbms_output.put_line(‘NO_DATA_FOUND’);
END;

複製程式碼

2、僅帶入參的儲存過程
複製程式碼

CREATE OR REPLACE PROCEDURE stu_proc(v_id IN student.id%type) AS
–宣告語句段
v_name varchar2(20);
BEGIN
–執行語句段
SELECT o.sname INTO v_name FROM student o where o.id=v_id;
dbms_output.put_line(v_name);
EXCEPTION
–異常處理語句段
WHEN NO_DATA_FOUND THEN dbms_output.put_line(‘NO_DATA_FOUND’);
END;

複製程式碼

3、僅帶出參的儲存過程
複製程式碼

–此種儲存過程不能直接用call來呼叫,這種情況的呼叫將在下面oracle函式呼叫中說明
CREATE OR REPLACE PROCEDURE stu_proc(v_name OUT student.sname%type) AS
–宣告語句段
BEGIN
–執行語句段
SELECT o.sname INTO v_name FROM student o where o.id=1;
dbms_output.put_line(v_name);
EXCEPTION
–異常處理語句段
WHEN NO_DATA_FOUND THEN dbms_output.put_line(‘NO_DATA_FOUND’);
END;

複製程式碼

4、帶入參和出參的儲存過程
複製程式碼

–此種儲存過程不能直接用call來呼叫,這種情況的呼叫將在下面oracle函式呼叫中說明
CREATE OR REPLACE PROCEDURE stu_proc(v_id IN student.id%type, v_name OUT student.sname%type) AS
–宣告語句段
BEGIN
–執行語句段
SELECT o.sname INTO v_name FROM student o where o.id=v_id;
dbms_output.put_line(v_name);
EXCEPTION
–異常處理語句段
WHEN NO_DATA_FOUND THEN dbms_output.put_line(‘NO_DATA_FOUND’);
END;

複製程式碼