我需要创建一个返回一组行的存储过程或函数。我注意到在存储过程中我可以SELECT * FROM table
成功。如果我在循环中获取行并且每次循环执行SELECT something, something_other FROM table
一次,我只得到一个结果。
我需要做的是循环,做一些计算并返回一个rowset。最好的方法是什么?临时表?存储功能?
任何帮助表示感谢。
答案 0 :(得分:3)
听起来你在存储过程的主体内使用游标来完成循环?
我的第一个建议是:尝试在单个查询中进行计算而不使用游标。究竟是什么计算?
如果确实需要使用游标,则将每个循环的结果插入临时表,然后在循环完成后从该表中选择SELECT *。
答案 1 :(得分:0)
您可以返回多个结果集,但仅当客户端库支持它并且客户端期望它时。有些则没有,因此使用它们会导致无序错误。
您当然可以构建一个临时表,从中进行选择并将其放入过程中,这样会很安全。另一种选择是使用准备好的SQL语句构建UNION选择,该语句返回您需要的所有行并执行该操作。那有点乱。