PHPでmssqlストアドプロシージャの出力パラメータを取得する方法

WBOY
リリース: 2016-07-25 08:59:09
オリジナル
1021 人が閲覧しました
  1. $conn=mssql_connect("127.0.0.1","user","passwd");
  2. $stmt=mssql_init("pr_name",$conn); ;//
  3. $a=50001;
  4. mssql_bind($stmt,"RETVAL",$val,SQLVARCHAR); // return -103 などの値を直接返すために使用されます。
  5. mssql_bind($stmt,"@outvar",$b,SQLVARCHAR,true);//ストアド プロシージャで定義された出力パラメータを返すために使用されます
  6. mssql_bind($stmt,"@invar",$a,SQLINT4); $result = mssql_execute($stmt,true);//結果セットを返すことはできません。取得できるのは出力パラメータのみです
  7. //$result = mssql_execute($stmt,false); //結果セットを返します
  8. //$ records=mssql_fetch_array($result);
  9. //print_r($records);
  10. //mssql_next_result($result); 次の結果セットは、FALSE の場合、出力パラメーター
  11. echo です。 $val;
  12. ?> ;
  13. コードをコピー
問題: いつものように、MS SQL Server のストアド プロシージャ procA が使用され、出力パラメータ nReturn が与えられ、結果セットが返されます。 PHP でこの procA を呼び出す方法には、いくつかの小さな問題があります。 私は当初、そのようなコードが出力パラメーターと返された結果セットの両方を取得できることを望んでいました。

// ストアド プロシージャを初期化します:
$nyear = 2004;
    $nPageSize = 20;
  1. $nPageNo = 1;
  2. $stmt = mssql_init ( "proc_stat_page", $db_mssql->Link_ID);
  3. // バインド入力パラメータ:
  4. mssql_bind($stmt, "@nReturn", $nReturn, SQLINT4, TRUE); nyear, SQLINT4);
  5. mssql_bind($stmt, "@nPageSize", $nPageSize, SQLINT4);
  6. // ストレージ プロセスを実行し、QueryID を取得します。
  7. $db_mssql->Query_ID = mssql_execute($stmt,false);
  8. ?>
  9. コードをコピー
  10. この方法では結果セットは取得できますが、$nReturn パラメータは取得できません。
  11. 最後の文を次のように変更すると、

$db_mssql->Query_ID = mssql_execute($stmt,true);

コードをコピー
    出力パラメータを取得しましたが、結果セットが消えています。
  1. 解決策: 最後に次の文を追加します。

// 最後の結果が返された後、戻り値にはストアド プロシージャによって返された値が含まれます。

mssql_next_result($db_mssql->Query_ID);

コードをコピー
  1. すぐに、魔法が効きます: PHP は $nRetVal に正しい出力パラメータを設定します。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート