我想编写一个返回多行数据的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行吗?
答案 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或多行,具体取决于您填充的内容。 (或者没有填写......)