6

現在、PHP を介してストアド プロシージャ (2 つの INSERTS と SELECT) を実行しようとしています。ストアド プロシージャは機能します (エラーはスローされません)。値は、指定されたテーブルにも挿入されます。結果を JSON オブジェクトに保存していますが、空の配列を返しています。SELECT のみを含むストアド プロシージャを実行すると、正しい値が返されます。テーブル内のすべての名前が変更されています (一部は抜けている可能性がありますが、コードは実行されます)。なぜ私たちの配列にデータが入力されていないのか、誰かが光を当てることができますか?

ここに私たちのストアドプロシージャがあります

ALTER procedure 
As
BEGIN

INSERT INTO TABLE1
(Loan_ID, Doc_ID, Borrower_Name, Docs_Drawn, Funder, First_Payment, Interest_Rate, Loan_Amount)
Select Loan_ID, 
        (SELECT (COUNT(*)) FROM TABLE WHERE A.Loan_ID = Loan_ID) AS Doc_ID,
        Borrower ,[Date_Docs_Drawn]
      ,[Funder]
      ,[Payment_Date]
      ,[Interest_Rate]
      ,[Loan_Amount] from VIEW A

 INSERT INTO TABLE2
(Loan_ID, Submitted_By, Event_Class, Event_Type, Event_Date, Doc_ID)
SELECT A.[Loan_ID], 
    'Program' AS Submitted_By
    ,'Collateral' AS Event_Class
      , 'Outstanding' AS Event_Type
     , CURRENT_TIMESTAMP AS Event_Date 
     , Doc_ID                                       
  FROM TABLE1 AS A
  WHERE NOT (A.Loan_ID = ANY (SELECT Loan_ID FROM TABLE2))

    SELECT [Loan_ID],[Doc_ID],[Borrower_Name]
      ,[Funder]
      ,[Docs_Drawn]
      ,[First_Payment]
      ,[Loan_Amount]
      ,[Interest_Rate]
    FROM TABLE1
    WHERE Loan_ID <> ALL
    (SELECT Loan_ID FROM TABLE2
    WHERE Event_Type <> 'Outstanding')
    ORDER BY Funder

END

ここに私たちのPHPのラフスケッチがあります

$query = "exec storedProcedure";
$result=sqlsrv_query($conn, $query);
$table = array();
while($row = sqlsrv_fetch_array($result)) {
    $table[] = $row;
}
echo json_encode($table);
4

1 に答える 1

2

SET NOCOUNT ONストアド プロシージャで使用してみてください。おそらく、SQL Server PHP ドライバーから PHP に返される結果によって制限されているため、SELECT ステートメントからデータを取得していません。

于 2013-07-11T16:39:12.660 に答える