mysql 函数怎么返回一个表

tanjiaozhong 2009-12-31 03:32:35
下面这个是MS sql的函数
返回一个table类型
我想在转到mysql下使用
可是他一直在返回类型上面报错(参数我已去掉@)

CREATE FUNCTION f_Cid(@ID int) RETURNS @t_Level TABLE(ID int,Level int) 
AS
BEGIN
DECLARE @Level int
SET @Level=1
INSERT @t_Level SELECT @ID,@Level
WHILE @@ROWCOUNT>0
BEGIN
SET @Level=@Level+1
INSERT @t_Level SELECT a.ID,@Level
FROM tb a,@t_Level b
WHERE a.PID=b.ID
AND b.Level=@Level-1
END
RETURN
END
GO

...全文
4260 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
tanjiaozhong 2009-12-31
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 acmain_chm 的回复:]
CREATE FUNCTION f_Cid(@ID int) RETURNS @t_Level TABLE(ID int,Level int)

首先,要先明确一个问题,就是MYSQL函数无法返回一个记录集
你只能创建一个临时表,把记录放到这个表中!

或许你可以看一下这个贴了。
http://blog.csdn.net/ACMAIN_CHM/archive/2009/05/02/4142971.aspx

[/Quote]

太好了,这正是我想要的,谢谢你热心帮忙了,结贴
ACMAIN_CHM 2009-12-31
  • 打赏
  • 举报
回复
CREATE FUNCTION f_Cid(@ID int) RETURNS @t_Level TABLE(ID int,Level int)

首先,要先明确一个问题,就是MYSQL函数无法返回一个记录集
你只能创建一个临时表,把记录放到这个表中!

或许你可以看一下这个贴了。
http://blog.csdn.net/ACMAIN_CHM/archive/2009/05/02/4142971.aspx
tanjiaozhong 2009-12-31
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 acmain_chm 的回复:]
引用可是怎么样取出在存储过程中select出来的结果集你想在什么地方引用这个结果集?如果是在C中,PHP中等,你可以直接象执行select * from aa一样调用call xxx();的结果集。
如果是其它存储过程中,你可以使用生成的临时表。
[/Quote]
我是在存储过程中执行select语句,然后通过结果集执行其它命令(就是在存储过程中的上下文)
就如我上面的那个函数那样

INSERT @t_Level SELECT @ID,@Level
WHILE @@ROWCOUNT>0
BEGIN
SET @Level=@Level+1
INSERT @t_Level SELECT a.ID,@Level
FROM tb a,@t_Level b
WHERE a.PID=b.ID
ACMAIN_CHM 2009-12-31
  • 打赏
  • 举报
回复
[Quote]可是怎么样取出在存储过程中select出来的结果集[/Quote]你想在什么地方引用这个结果集?如果是在C中,PHP中等,你可以直接象执行select * from aa一样调用call xxx();的结果集。
如果是其它存储过程中,你可以使用生成的临时表。
tanjiaozhong 2009-12-31
  • 打赏
  • 举报
回复
我在重新写一个存储过程
可是怎么样取出在存储过程中select出来的结果集
ACMAIN_CHM 2009-12-31
  • 打赏
  • 举报
回复
[Quote]哦,明白了,是用存储过程生成临时表,然后从这个临时表获取数据吗?[/Quote]
是的,你只能生成一个 create temporary table xx 然后其它过程可以访问这个xx表。临时表在connection 中断后会被自动清除。
wwwwb 2009-12-31
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 tanjiaozhong 的回复:]
引用 1 楼 wwwwb 的回复:
MYSQL没有表变量,用表来保存结果

哦,明白了,是用存储过程生成临时表,然后从这个临时表获取数据吗?
[/Quote]
yes
tanjiaozhong 2009-12-31
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 wwwwb 的回复:]
MYSQL没有表变量,用表来保存结果
[/Quote]
哦,明白了,是用存储过程生成临时表,然后从这个临时表获取数据吗?
wwwwb 2009-12-31
  • 打赏
  • 举报
回复
MYSQL没有表变量,用表来保存结果

56,803

社区成员

发帖
与我相关
我的任务
社区描述
MySQL相关内容讨论专区
社区管理员
  • MySQL
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧