我需要返回尚未处理的报告表中所有报告的列表。我正在为此过程使用存储过程。
这是我的存储过程创建:
CREATE PROCEDURE spGetAllUntouchedReportID
@ReportID int OUTPUT
AS
BEGIN
SELECT @ReportID=Report.ReportID
FROM Report
WHERE Report.Status IS NULL
END
这就是我调用存储过程的方式:
DECLARE @ReportID int
EXECUTE spGetNextReportID
@ReportID OUTPUT
Print @ReportID
本质上,一个 C# 应用程序将连接并获取结果集,但我正在使用调用来测试它。我的问题是对存储过程的调用只打印它找到的最后一个结果。
以下是报告表的示例集:
ReportID Status
1 NULL
2 Incomplete
3 NULL
对该过程的调用打印出:
3
代替:
1
3
如何让我的存储过程存储它从存储过程返回的集合并调用它来打印每个集合?这也可能出现在其他存储过程中,我需要执行具有多个列的 Select * 并需要返回整个集合
最佳答案
OUTPUT 可以在其中保存一个值。如果要返回值列表,则应将过程更改为以下内容:
CREATE PROCEDURE spGetAllUntouchedReportID
AS
BEGIN
SELECT Report.ReportID
FROM Report
WHERE Report.Status IS NULL
END
这将返回所有具有
Status
的值的 null
.见 SQL Fiddle with Demo
关于SQL 存储过程 OUTPUT 返回多行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16126746/