我可以在MySQL中使用存儲過程的命名參數嗎?我需要調用存儲過程是這樣的:MySQL中存儲過程的命名參數
CALL stored_procedure(@param1 = "foo1", @param2 = "foo2");
答案是
CALL stored_procedure(@param1 := "foo1", @param2 := "foo2");
感謝Pentium10。
我可以在MySQL中使用存儲過程的命名參數嗎?我需要調用存儲過程是這樣的:MySQL中存儲過程的命名參數
CALL stored_procedure(@param1 = "foo1", @param2 = "foo2");
答案是
CALL stored_procedure(@param1 := "foo1", @param2 := "foo2");
感謝Pentium10。
這是不可能正式的。
但有一個解決方法,可以提供幫助。使用這個:
CALL prcInsertStuff (
@paramName1 := nameValue1
, @paramValue1 := paramValue1
);
MySQL存儲過程不支持命名參數的任何順序。該功能要求在過去已經取得,例如:
當你發現,用表達式來設置會話變量的解決方法有無關的參數的順序。換句話說,你可以做到以下幾點:
CALL stored_procedure(@param1 := "foo1", @param2 := "foo2");
但分別值「foo1」和「foo2的」仍然是第一和第二參數。
如果您想要更大的靈活性,我建議您編寫存儲過程以接受no參數,但直接使用會話變量。
SET @param1 := "foo1", @param2 := "foo2";
CALL stored_procedure();
在你的程序中,則必須引用變量@param1
,@param2
等
CREATE PROCEDURE stored_procedure()
BEGIN
SELECT * FROM mytable WHERE col1 = @param1 AND col2 = @param2;
END
嗨Pentium10,可惜的是它不會幫助我。我需要真正的命名參數。不管怎樣,謝謝你。 – Worker 2010-11-22 13:32:56
你不能那樣做。但是你可以將一個名字和一個變量作爲一對。 – Pentium10 2010-11-22 13:33:35
啊!我懂了!這看起來好多了。給我幾秒鐘的測試請:-) – Worker 2010-11-22 13:37:23