我正在使用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作为输出。
我只想记录记录,而不是整个记录。我必须使用存储过程。
请帮我找到解决方案。
答案 0 :(得分:1)
存储过程不会返回implcit行数。
您需要修改存储过程以生成行计数,并将其作为OUTPUT
parameters从过程中返回或作为其他结果集返回。
如何执行此操作取决于程序的性质以及您要计算的内容。如果您计算受过程中一个或多个SELECT
,INSERT
或UPDATE
语句影响的行,则可以使用@@ROWCOUNT
内部参数来设置值OUTPUT
参数:
<some SQL operation>
SET @rowcount = @@ROWCOUNT
如果您只是计算表中的行,则可以将简单计数查询的输出分配给参数:
SELECT @rowcount = COUNT(1) FROM <some table>