只是爲了說明使用中的另一個存儲的過程的一種方法:
DELIMITER //
CREATE PROCEDURE setOutputParameter (
OUT OutputParameter VARCHAR(20)
)
BEGIN
SELECT 'output' INTO OutputParameter;
END//
DELIMITER ;
DELIMITER //
CREATE PROCEDURE useOutputParameter()
BEGIN
CALL setOutputParameter(@tmpOutputParameter);
IF @tmpOutputParameter = 'output'
THEN SELECT 'string: output was returned' AS res;
END IF;
END//
DELIMITER ;
步驟setOutputParameter
設置一個值到它的out
參數,然後該值在步驟setOutputParameter
創建的佔位符(並進入可變:@tmpOutputParameter
,然後在IF..THEN..
聲明檢查
同樣,這可能不是最簡單的例子,甚至可能是矯枉過正的過程(使用功能的一種可能的替代),還有其他的方式返回t值o在存儲過程中使用,旨在利用存儲過程中的一個存儲過程的輸出。
[編輯]基於文的評論:
的INOUT
或OUT
參數存儲過程中(僅在存儲過程中可用的,而不是功能)允許經由CALL storedprocedurename..
命令所存儲的過程的調用者傳遞一個用戶定義變量爲out
參數的被調用過程的位置 - 在該過程中,同一過程運行並將值傳遞給它。被調用過程執行後,傳遞到用戶定義變量的值out
變爲可用。在上面的示例中,存儲過程setOutputParameter
中的out
參數OutputParameter
將需要一個變量在被調用時傳遞給它,因爲存儲過程setOutputParameter
將傳遞一個值給它。因此,實際上,一旦存儲過程useOutputParameter
中的代碼通過CALL setOutputParameter(@tmpOutputParameter);
調用,則其傳遞的變量將用作輸出參數:@tmpOutputParameter
現在將包含字符串值output
,其中過程useOutputParameter
中的其餘代碼可以使用...
在這裏閱讀更多:http://dev.mysql.com/doc/refman/5.0/en/create-procedure.html
對於'Edit1'看來你的程序'ConsultConsoleAvailableTime'需要三個參數,你只提供二:'StartTime'和'PlusTime' – Nonym
他們已經滿足了。我不知道爲什麼這個消息。 – Richard
我在這裏犯了一個小錯誤。我在修理。 我相信你是對的,你的迴應。 – Richard