PHPからSQL Serverストアドプロシージャを実行しようとしています。ストアドプロシージャは出力値を返します。 PHPの値をWebページに表示したい。PHPからの出力パラメータ付きSQL Serverストアドプロシージャを呼び出す
出力値が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'を通常の番号に置き換えたときに正しい応答が得られたら、試してみてください。 – Andy
アンディ私もそれを試しました。私は単にストアドプロシージャから曖昧な値を返しました。それでも0を返します。 – srinivasan