【发布时间】:2016-01-09 22:07:02
【问题描述】:
我创建了一个存储过程来导入记录列表。此存储过程插入到临时表,然后根据合同编号是否匹配进行合并。 WHEN NOT MATCHED BY TARGET 将其插入到真实表中,而 WHEN NOT MATCHED BY SOURCE 则从真实表中删除。
这很好用,我正在处理的问题是在 PHP 中试图让它回显 SQL SERVER 消息:
(2384 row(s) affected)
(2 row(s) affected)
第一条消息“(2384 行受影响)”显示为 sql_srv_rows_affected,但第二条消息“(2 行受影响)”没有。其中第一个是对临时表的导入,第二个结果是受 MERGE 语句影响的行数。
这是我的代码来回显受影响的行:
$rows_affected = sqlsrv_rows_affected($Result);
if( $rows_affected === false) {
die( print_r( sqlsrv_errors(), true));
}
elseif( $rows_affected == -1) {
echo "No information available.<br />";
}
else {
echo $rows_affected." rows were updated.<br />";
}
我可以做一个 while 语句来实现我正在寻找的东西吗?
提前谢谢你!
编辑: 这是有效的代码:
$rows_affected = sqlsrv_rows_affected( $PPListImportResult);
$next_result = sqlsrv_next_result($PPListImportResult);
if( $rows_affected === false) {
die( print_r( sqlsrv_errors(), true));
}
elseif( $rows_affected == -1) {
echo "No information available.<br />";
}
else {
echo $rows_affected." rows were updated.<br />";
echo $next_result." rows were updated.<br />";
}
如果我有超过 2 个结果,我可以将 $next_result 变量更改为 while 语句。
【问题讨论】:
-
批次有2个结果,大部分函数只取第一个结果。尝试通过sqlsrv_next_result()进入下一个结果
-
谢谢你,我会试着把它放在一起,然后告诉你
-
感谢您的完美工作!
标签: php sql-server rows-affected