-
- $conn=mssql_connect("127.0.0.1","user","passwd");
- $stmt=mssql_init("pr_name",$conn); ;//
- $a=50001;
- mssql_bind($stmt,"RETVAL",$val,SQLVARCHAR); // return -103 などの値を直接返すために使用されます。
- mssql_bind($stmt,"@outvar",$b,SQLVARCHAR,true);//ストアド プロシージャで定義された出力パラメータを返すために使用されます
- mssql_bind($stmt,"@invar",$a,SQLINT4); $result = mssql_execute($stmt,true);//結果セットを返すことはできません。取得できるのは出力パラメータのみです
- //$result = mssql_execute($stmt,false); //結果セットを返します
- //$ records=mssql_fetch_array($result);
- //print_r($records);
- //mssql_next_result($result); 次の結果セットは、FALSE の場合、出力パラメーター
- echo です。 $val;
- ?> ;
- コードをコピー
問題: いつものように、MS SQL Server のストアド プロシージャ procA が使用され、出力パラメータ nReturn が与えられ、結果セットが返されます。
PHP でこの procA を呼び出す方法には、いくつかの小さな問題があります。
私は当初、そのようなコードが出力パラメーターと返された結果セットの両方を取得できることを望んでいました。
// ストアド プロシージャを初期化します: $nyear = 2004; $nPageSize = 20; - $nPageNo = 1;
- $stmt = mssql_init ( "proc_stat_page", $db_mssql->Link_ID);
- // バインド入力パラメータ:
- mssql_bind($stmt, "@nReturn", $nReturn, SQLINT4, TRUE); nyear, SQLINT4);
- mssql_bind($stmt, "@nPageSize", $nPageSize, SQLINT4);
- // ストレージ プロセスを実行し、QueryID を取得します。
- $db_mssql->Query_ID = mssql_execute($stmt,false);
- ?>
-
-
-
- コードをコピー
-
-
- この方法では結果セットは取得できますが、$nReturn パラメータは取得できません。
-
- 最後の文を次のように変更すると、
$db_mssql->Query_ID = mssql_execute($stmt,true);
コードをコピー
出力パラメータを取得しましたが、結果セットが消えています。 -
- 解決策:
最後に次の文を追加します。
// 最後の結果が返された後、戻り値にはストアド プロシージャによって返された値が含まれます。 mssql_next_result($db_mssql->Query_ID);
コードをコピー
-
- すぐに、魔法が効きます:
PHP は $nRetVal に正しい出力パラメータを設定します。
-
-
|