初めてのストアド関数の作成を開始したばかりなので、いくつか問題があります。現在、関数を呼び出しますSELECT test();
(test は今のところ関数名です)。関数 (ユーザー名 ID) に番号を送信し、ユーザー名を返したいと考えています。
1SELECT test(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
、エラーが発生します。
関数から結果セットを返すことはできません
これで明らかな間違いを犯したことがありますか?完全に間違っていないことを願っています。アドバイスをありがとう:)。
編集:テーブルにさらにいくつかの行を追加したところ、エラーが発生しました:
結果は複数の行で構成されていました
完全な 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