0

嗨,我尝试在 MySQL 中编写一个函数,它会从表中返回一个值。

我收到错误:

错误代码:1415。不允许从函数返回结果集

我知道这意味着什么,但我不知道如何解决这个问题。我只需要一个值,即插入行的 Id。我很高兴有任何帮助。

该函数的作用是:
在 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 回答