如何使用LAST_INSERT_ID()从存储过程中OUT

时间:2011-06-15 15:47:58

标签: mysql stored-procedures return command-line-interface lastinsertid

Mysql版本14.14 Distrib 5.1.41

我有一个存储过程,我正在尝试编译,但错误不断出现。我的存储过程准备一个insert语句,执行它,解除分配准备好的语句,然后尝试返回最后一个插入ID。 这是一个伪提取:

1 CREATE PROCEDURE `audit`( IN pExampleValue varchar(50))
2 
3 BEGIN
4 PREPARE stmt FROM 'INSERT INTO `Audit` (`Value`) VALUES (?)';
5 EXECUTE stmt USING @pExampleValue;
6 DEALLOCATE PREPARE stmt
7 
8 RETURN LAST_INSERT_ID() AS `AuditId`;
9 END$$

从我能够收集到的我的mysql版本可以在存储过程中使用预处理语句。但是我得到的错误是。

SQL Error (1313): RETURN is only allowed in a FUNCTION

由于错误说我无法从程序返回。但是我可以从一个程序出来?我很难找到一个查询的示例,我将从这个例子中做到这一点。

1 个答案:

答案 0 :(得分:2)

要么声明OUT参数,要么将您的程序设为FUNCTION

你会在这里找到足够的文件:

http://dev.mysql.com/doc/refman/5.5/en/create-procedure.html