【发布时间】:2017-01-31 08:44:11
【问题描述】:
我正在尝试从 php 执行一个 sql server 存储过程。存储过程返回一个输出值。我希望 php 中的值显示在网页中。
除了输出值在 php 中返回 0 外,一切正常。但是该行被完美地插入。输出值显示为 0。我犯了错误的地方很生气。下面是我的php代码
require('db.php');
$billno = "REF0001";
$retsno = 0.0;
$sp_name = "{call testinsert( ?, ? )}";
$params = array(
array($billno, SQLSRV_PARAM_IN),
array($retsno, SQLSRV_PARAM_OUT)
);
/* Execute the query. */
$stmt3 = sqlsrv_query( $conn, $sp_name, $params);
if( $stmt3 === false )
{
echo "Error in executing statement 3.\n";
die( print_r( sqlsrv_errors(), true));
}
echo "Inserted Retuern Sno for ".$billno." is ". $retsno. ".";
我的存储过程是
create procedure testinsert(@bill_no VARCHAR(20),@RetSno INT OUTPUT)
as
begin
insert into testable values(@bill_no,GETDATE())
set @RetSno = @@IDENTITY
return
end
【问题讨论】:
-
这些变量没有被修改,所以当你回显它们时,你会得到它们的初始值 (REF0001, 0,0)。您需要将更新的值分配给这些变量。还是我错过了什么?
-
请尝试将
@@IDENTITY替换为正常号码时得到正确响应。 -
安迪我也试过了。我只是从存储过程中返回了一个模糊的值。它仍然返回 0。
-
@OfirBaruch 是对的,
sqlsrv_query只是使用您的$params-Array 但不会覆盖其中的任何内容 -
尝试修改你的存储过程并使用“sqlsrv_fetch_array($stmt3)”
标签: php sql-server