4
我剛開始創建存儲函數,這是我第一次,所以我有幾個問題。目前我使用SELECT test();
來調用函數(測試是現在的函數名稱)。我想發送一個號碼給該功能(用戶名ID)並返回用戶名。mysql存儲函數參數
我有這個工作通過使用SELECT test(1);
1是表中的用戶的ID。這似乎是作爲用戶名返回,但如果我輸入任何數字相同的用戶名也返回。
BEGIN
DECLARE new_username VARCHAR(90);
SELECT `username` INTO new_username FROM `users` WHERE `ID` = ID;
return new_username;
END
我已經設置參數爲ID int
。
我是否認爲關鍵字INTO
會將用戶名的值放入變量new_username
?如果我沒有INTO
運行它,我得到的錯誤:
Not allowed to return a result set from a function
有我在此做出任何明顯的失誤,我希望我沒有做過完全錯誤。感謝您的任何建議:)。
編輯:我只是增加了一些行到我的表,我現在得到的錯誤:
Result consisted of more than one row
完整的SQL版本:
CREATE DEFINER=`elliotts`@`%` FUNCTION `test`(ID int)
RETURNS varchar(32) CHARSET latin1
BEGIN
DECLARE new_username VARCHAR(32);
SELECT `username`
INTO new_username
FROM `users`
WHERE `ID` = ID;
return new_username;
END
謝謝我試過,但得到的錯誤: 無法在另一個存儲的例程中創建一個功能 – Elliott 2010-10-19 15:56:25
@Elliot:在單獨的腳本選項卡中執行代碼 - 不知何故,你已經設法將其粘貼到一個現有的函數/存儲過程聲明。 – 2010-10-19 15:58:31
@Elliot:如果用戶名爲NULL,你想做什麼?你知道如果有人用表中不存在的參數值運行函數,那麼返回值也是NULL? – 2010-10-19 17:39:43