私が取り組んでいるストアドプロシージャの結果を取得する方法を探してきました。ストアドプロシージャの結果を変数に保存する
このSPを呼び出すと、一連の番号が自動インクリメント番号で返されます。 ex. 0000002743
私はSPを作成したものではないと私は、SQL Serverの初心者ですが、私はにmodify'it」にしようとしたときに、少なくともそれがで作られている方法を見て、私はこれを持っている:
ALTER PROCEDURE [dbo].[New_BatchCode] AS
DECLARE @x NUMERIC
UPDATE SysVars SET @x = BatchCode = BatchCode + 1
SELECT BatchCode = REPLACE(STR(@x,10),' ','0')
SQL Serverでは、私はちょうどEXEC [dbo].[New_BatchCode]
を実行し、結果が表示されます。しかし、PHPでは、私はそれを動作させることはできません。私は、次のことを試してみました:
$conn = $this->delphi_connect();
$batch_code_query = "EXEC [dbo].[New_BatchCode];";
$stmt3 = sqlsrv_query($conn,$batch_code_query);
if($stmt3 === false)
{
echo "Error in executing statement 3.\n";
die(print_r(sqlsrv_errors(), true));
}
if ($stmt3) {
while ($row = sqlsrv_fetch_array($stmt3, SQLSRV_FETCH_ASSOC)) {
$ret[] = $row;
}
}
sqlsrv_free_stmt($stmt3);
sqlsrv_close($conn);
print_r($ret);
die();
$conn = $this->delphi_connect();
$batch_code_query = "{call [dbo].[New_BatchCode]}";
$stmt3 = sqlsrv_query($conn,$batch_code_query);
if($stmt3 === false)
{
echo "Error in executing statement 3.\n";
die(print_r(sqlsrv_errors(), true));
}
if ($stmt3) {
while ($row = sqlsrv_fetch_array($stmt3, SQLSRV_FETCH_ASSOC)) {
$ret[] = $row;
}
}
sqlsrv_free_stmt($stmt3);
sqlsrv_close($conn);
print_r($ret);
die();
私の目標は、何らかの形での結果を格納することですe SPを実行して別のクエリに挿入してください。 $batch_code = [result]
のように。
もう何をすべきかわかりません。私はあなたの助けに感謝します。ありがとう!
結果はどの行ですか?テーブルを更新するとすべての行が更新されるので、 'INSERTED'テーブルをチェックし、操作が' INSERT'か 'UPDATE'かどうかを検出する必要があります。値はテーブルに格納されます。 。 – Sami
こんにちは@Sam! 'BatchCode'という1つのカラムだけを返します。私はその価値を得る必要があります。私は上記のイメージを上げます。 –
'BatchCode'列のどの行ですか? 'WHERE'はありませんので、複数の値を意味するすべての行を更新します。 – Sami