ホームページ >バックエンド開発 >PHPチュートリアル >PHP が mssql ストアド プロシージャの出力パラメータ関数を取得する実装_PHP チュートリアル

PHP が mssql ストアド プロシージャの出力パラメータ関数を取得する実装_PHP チュートリアル

WBOY
WBOYオリジナル
2016-07-21 15:14:29894ブラウズ

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

次のようなコードをコピーします: & & lt ;? $ conn = mssql_connect ("127.0.0.1", "user", "passwd") );
mssql_select_db ("pr_name",$conn);//
$a=50001; // 値を直接返すために使用されます。リターン-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; $nPageNo = 1; // ストアド プロシージャを初期化します: $stmt = mssql_init("proc_stat_page ", $db_mssql->Link_ID); // バインド入力パラメータ:
mssql_bind($stmt, "@nReturn", $nReturn, SQLINT4, TRUE);
mssql_bind($stmt, "@nyear", $n Year, SQLINT4);
mssql_bind($stmt, " @nPageSize", $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 の 2 番目のパラメータは、mssql_execute メソッドの後に出力パラメータを取得できるように TRUE です。返された結果セットが必要な場合は、最後の結果セットが返された後、結果セットごとに mssql_next_result を 1 回呼び出す必要があります。 mssql_next_result を再度呼び出すと、戻り値 FALSE が返されます。この時点で、出力パラメーターにアクセスできます。
解決策:

最後に文を追加しましょう
:
//戻り値が返されると、ストアド プロシージャによって返された値が返されます。
すぐに魔法が機能し、
PHP が $nRetVal に正しい出力パラメータを入力します。



http://www.bkjia.com/PHPjc/326279.html

www.bkjia.com

tru​​ehttp://www.bkjia.com/PHPjc/326279.html

技術記事

開発プロセス中に、MSSQL ストアド プロシージャの出力パラメータを取得できない問題が発生することがあります。この記事では、PHP で mssql ストアド プロシージャの出力パラメータを取得する方法を詳しく紹介します。 ..

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。