MySQL函数返回超过1行

时间:2010-05-23 13:27:53

标签: mysql function

我想编写一个返回多行数据的MySQL存储函数。这可能吗?它似乎被锁定在一行 - 甚至不能返回 0 行。

例如

DELIMITER //

create function go()

RETURNS int
deterministic
NO SQL

BEGIN

return null ; -- this doesn't return 0 rows!  it returns 1 row
-- return 0 ;

END //

DELIMITER ;

从MySQL存储过程中返回null,但不返回0行..它返回1行,其中包含值null

我可以从MySQL函数返回0或超过1行吗?

2 个答案:

答案 0 :(得分:7)

来自MySQL参考:

  

23.4.6:MySQL 5.0存储例程能否返回结果集?

     

存储过程可以,但存储的功能不能。如果在存储过程中执行普通SELECT,则结果集将直接返回给客户端。您需要使用MySQL 4.1(或更高版本)客户端 - 服务器协议才能工作。这意味着 - 例如 - 在PHP中,您需要使用mysqli扩展而不是旧的mysql扩展。

答案 1 :(得分:1)

您想要创建一个返回表格的函数:

create function go()
RETURNS @MyTable table 

然后填充该表...

Insert @MyTable
Values (.....) 

然后返回。它应包含0,1或多行,具体取决于您填充的内容。 (或者没有填写......)