0

こんにちは私はMySQLで関数を書こうとしています。これにより、テーブルから値が返されます。

エラーが発生しました:

エラーコード:1415。関数から結果セットを返すことは許可されていません

それが何を意味するのかは知っていますが、問題を解決する方法がわかりません。必要なのは、挿入された行のIDという1つの値だけです。助けてくれてうれしいです。

関数の機能は
次のとおりです。ランダム値を使用してaip_requestテーブルに新しい行を挿入します。これにより、挿入後に行を識別できます。関数は、作成された行のIDを返す必要があります。request_idは自動値です。

DROP FUNCTION IF EXISTS `sp_get_new_request_id`;
DELIMITER $$

CREATE FUNCTION `sp_get_new_request_id` ()
RETURNS BIGINT
BEGIN
 DECLARE var_random bigint;
 SET @random := CAST(RAND(NOW()) AS CHAR(150));
 INSERT INTO aip_request
  (Firstname)
  VALUES( @random );
 SELECT request_id INTO var_random FROM aip_request
 WHERE Firstname = @random 
 LIMIT 1;
 Return var_random;
END
$$
4

1 に答える 1

1

このクエリを変更します-

SELECT @random := CAST(RAND(NOW()) AS CHAR(150));

これで-

SET @random := CAST(RAND(NOW()) AS CHAR(150));

...ストアド関数からデータセットを返すSELECTクエリを実行することはできません。

于 2012-02-02T10:17:29.477 に答える