如何判断 Sql Server 存储过程是否返回记录

cod*_*000 5 t-sql sql-server-2005

在 tsql 中,我调用一个返回记录集的 tsql 存储过程。我希望能够判断记录集是否为空。

由于某种原因 @@rowcount 总是返回 1。

做这个的最好方式是什么?

另一件事是我无法编辑这个存储过程。

gbn*_*gbn 5

在内部存储过程中使用@@rowcount,作为输出参数传回。在内部存储过程中的 SELECT 之后立即使用@@rowcount 。并像这样调用:

EXEC dbo.InnerProc @p1, ..., @rtncount OUTPUT
Run Code Online (Sandbox Code Playgroud)

或者...

在 SELECT 之后立即在内部存储过程中使用 RETURN @@rowcount 。并像这样调用:

EXEC @rtncount = dbo.InnerProc @p1, ...
Run Code Online (Sandbox Code Playgroud)

编辑:

如果您无法编辑过程,则必须加载临时表并对其进行操作。

CREATE TABLE #foo (bar int...)

INSERT #foo
EXEC MyUntouchableProc @p1
SELECT @@ROWCOUNT
Run Code Online (Sandbox Code Playgroud)

@@ROWCOUNT 失败,因为它只显示最后一个语句计数,而不是最后一个 SELECT。它可以是 RETURN、END(在某些情况下)、SET 等