2017-12-14 7 views
0

私が取り組んでいるストアドプロシージャの結果を取得する方法を探してきました。ストアドプロシージャの結果を変数に保存する

この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(); 

マイSQL Serverの enter image description here

私の目標は、何らかの形での結果を格納することですe SPを実行して別のクエリに挿入してください。 $batch_code = [result]のように。

もう何をすべきかわかりません。私はあなたの助けに感謝します。ありがとう!

+0

結果はどの行ですか?テーブルを更新するとすべての行が更新されるので、 'INSERTED'テーブルをチェックし、操作が' INSERT'か 'UPDATE'かどうかを検出する必要があります。値はテーブルに格納されます。 。 – Sami

+0

こんにちは@Sam! 'BatchCode'という1つのカラムだけを返します。私はその価値を得る必要があります。私は上記のイメージを上げます。 –

+0

'BatchCode'列のどの行ですか? 'WHERE'はありませんので、複数の値を意味するすべての行を更新します。 – Sami

答えて

1

あなたは(必要に応じて)あなたはINSERTEDテーブルから挿入された値を保存し、必要なものは何でもできる場所、あなたは#Temporalテーブルを使用するか、テーブルを作成することができ、更新のためにあなたのテーブルの上にTRIGGERを作成することによってこの問題を解決することができますそれらと関係があります。

+0

私はあなたの提案に取り組むつもりです。私はまだ初心者ですので、何をすべきかについては全く考えていません。私はこれが(私の知識レベルで)複雑になるとは決して考えなかった。 –

関連する問題