儲存過程之無引數,in、out、inout引數的講解
首先建立三個測試表:
如下:
user表裡邊的欄位為userId,userName 使用者表
dept表裡邊的欄位為deptId,deptName部門表
other表裡邊的欄位為otherId,otherName 其他表
建立無引數儲存
create procedure 你建立的名稱()
begin
。。。。。。。。。
end;
如下:
一.建立語句
create procedure userCount()@1
begin
SELECT COUNT(userId) FROM USER;@2
end;@3
注意:
1. 在@2和@3處記得加分號,要不然在執行時,會報語法錯誤
2. 在@1處不論有無引數都需要加 (),
二、在資料庫中檢視你建立的儲存過程語句為
select * frommysql.proc where name = '你上邊建立的名稱'and `type` = 'PROCEDURE'
如下:
select * frommysql.proc where name = 'userCount' and `type` = 'PROCEDURE'
三、檢視儲存過程程式碼語句
show createprocedure 你上邊建立的名稱 如下:
show createprocedure userCount
四、呼叫建立好的儲存過程語句
call userCount ();
五、刪除儲存語句
DROP PROCEDURE你上邊建立的名稱
如下:
DROP PROCEDURE userCount
=====================================================================
一、建立IN引數儲存
語句如下:
CREATE procedure userName(in cType char)
begin
IF cType='U' THEN
SELECT * FROM USER ;
ELSEIF cType='D' THEN
SELECT * FROM dept ;
ELSE
SELECT * FROM other ;
END IF;
end;
呼叫語句如下:
1.CALL userName('A')
2.CALL userName('D')
3.CALL userName('E')
二、建立OUT引數儲存
CREATE PROCEDUREtestOut(OUT outResult char)
BEGIN
SELECT outResult; //查詢結果1
SET outResult='A';//設定值
SELECT outResult; //查詢結果2
END;
呼叫語句如下:
SET @outResult = 'W';
CALLtestOut(@outResult)
呼叫之後返回兩個值結果一和結果而結果1為null 結果2為A
二、建立INOUT引數儲存
CREATE PROCEDUREtestInOut(INOUT inOutResult char)
BEGIN
SELECT inOutResult;
SET inOutResult='A';
SELECT inOutResult;
END;
呼叫語句如下:
SET @inOutResult= 'W';
CALLtestInOut(@inOutResult)
呼叫之後返回兩個值結果一和結果而結果1為W 結果2為A
總結:
IN 輸入引數
表示該引數的值必須在呼叫儲存過程時指定,在儲存過程中修改該引數的值不能被返回,為預設值
OUT 輸出引數
該值可在儲存過程內部被改變,並可返回
INOUT 輸入輸出引數
呼叫時指定,並且可被改變和返回