ホームページ  >  記事  >  php教程  >  PHPはmssqlストアドプロシージャの出力パラメータ関数を取得します。

PHPはmssqlストアドプロシージャの出力パラメータ関数を取得します。

WBOY
WBOYオリジナル
2016-06-13 11:56:21867ブラウズ

開発プロセス中に、MSSQL ストアド プロシージャの出力パラメータを取得できない問題が発生することがあります。この記事では、mssql ストアド プロシージャの出力パラメータを取得する関数の実装について詳しく説明します。 PHP の手順について詳しく知りたい方は、次を参照してください。

コードをコピー コードは次のとおりです:


$conn=mssql_connect("127.0.0.1","user ","passwd");
mssql_select_db("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); 、次は出力パラメータです
echo $b;
echo $val;
?> 以下は他の場所から見られます。

ちょっとしたトラブル

:
いつものように MS SQL Server のストアド プロシージャ procA を使用します。これは、出力パラメータ nReturn、
を与え、結果セットを返します。 PHP にこの procA を呼び出すように要求するときに、少し問題が発生しました。 ケーキを持って食べることもできません:
私たちは当初、そのようなコードが出力パラメーターと返された結果セットの両方を取得できることを期待していました:



Copy code

コードは次のとおりです: //ストアド プロシージャに渡すパラメーターを初期化します: $n Year = 2004;

$nPageSize = 20 ;

$nPageNo = 1 ;
// ストアド プロシージャを初期化します:
$stmt = mssql_init("proc_stat_page", $db_mssql->Link_ID); >mssql_bind($stmt, " @nReturn", $nReturn, SQLINT4, TRUE);
mssql_bind($stmt, "@nyear", $nyear, SQLINT4); , $nPageSize, SQLINT4);
mssql_bind($stmt, "@nPageNo", $nPageNo, SQLINT4);
// ストアド プロシージャを実行し、QueryID を取得します:
$db_mssql->Query_ID = mssql_execute($stmt,false);


結果セットは取得できますが、$nReturn パラメーターは出力パラメーターを取得できません。
最後の文を次のように変更すると、
$db_mssql->Query_ID = mssql_execute($stmt,true);
出力パラメーターは取得されますが、結果セットは失われます。
ケーキを持って食べることもできないようです。
PHP ではこれもできないのでしょうか?この問題は PHP マニュアルには記載されていません。

PHP メンテナーからの説明:
元々、私たちの呼び出しメソッドは PHP バージョン 4.3 より前に確実にサポートされていました。
「ただし、PHP のバージョン 4.3 以降、PHP は複数の結果セットを返すストアド プロシージャと互換性を持たせるためにこの機能を変更しました。

「結果が必要ない場合」 mssql_execute メソッド "

" の後に出力パラメータを取得できるように、mssql_execute の 2 番目のオプション パラメータを TRUE に設定する必要があります。返された結果セットが必要な場合は、結果ごとに 1 回呼び出す必要があります。最後の結果セットが返された後、mssql_next_result を呼び出すと、戻り値 FALSE が返されます。この時点で、出力パラメーターにアクセスできます。

Words
:
// 最後の結果が返された後、戻り値にはストアド プロシージャによって返された値が入ります。 >即座に、魔法はすでに有効になります:
PHP は $nRetVal に正しい出力パラメータを設定します。
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。