sqlsrv_num_rows不适用于存储过程

时间:2011-11-07 08:47:08

标签: php sql-server

我正在使用PHP-SQRSRV驱动程序来读取我的MSSQL数据库。

当我使用sqlsrv_num_rows时,我得到0结果,因为光标无法正确设置。只有存储过程才会发生这种情况。 我使用过SQLSRV_CURSOR_STATIC& SQLSRV_CURSOR_KEYSET。没有工作。

最初我遇到了这个错误:直接执行SQL,没有游标.. Executing SQL directly; no cursor in PHP when calling a stored procedure

但是在设置[sqlsrv_configure(“WarningsReturnAsErrors”,0);]之后就解决了。 现在我得到的都是0或-1作为输出。

我只想记录记录,而不是整个记录。我必须使用存储过程。

请帮我找到解决方案。

1 个答案:

答案 0 :(得分:1)

存储过程不会返回implcit行数。

您需要修改存储过程以生成行计数,并将其作为OUTPUT parameters从过程中返回或作为其他结果集返回。

如何执行此操作取决于程序的性质以及您要计算的内容。如果您计算受过程中一个或多个SELECTINSERTUPDATE语句影响的行,则可以使用@@ROWCOUNT内部参数来设置值OUTPUT参数:

<some SQL operation>    
SET @rowcount = @@ROWCOUNT

如果您只是计算表中的行,则可以将简单计数查询的输出分配给参数:

SELECT @rowcount = COUNT(1) FROM <some table>