ホームページ >データベース >mysql チュートリアル >クラシック ASP のストアド プロシージャからデータを正しく取得するにはどうすればよいですか?
クラシック ASP とストアド プロシージャ: 効率的なデータ取得
クラシック ASP アプリケーション内のストアド プロシージャからデータを取得する場合、多くの場合、課題が発生します。この記事では、ストアド プロシージャの実行でレコードセットの作成に失敗し、空の応答または不正な応答が返されるという一般的な問題を解決します。
問題: 空のレコードセット
開発者は、ストアド プロシージャからデータを取得するように設計されたクラシック ASP コードが空のレコードセットを返すという状況に頻繁に遭遇します。 データベース コマンドは正しいように見えますが、予期したデータにはアクセスできないままです。
コード例と分析
この問題を示す典型的なコード スニペットを見てみましょう:
<code class="language-asp">Set conn = Server.CreateObject("ADODB.Connection") conn.open "PROVIDER=SQLOLEDB;DATA SOURCE=X;DATABASE=Y;UID=Z;PWD=W;" Set objCommandSec = CreateObject("ADODB.Command") With objCommandSec Set .ActiveConnection = Conn .CommandType = 4 .CommandText = "usp_Targets_DataEntry_Display" .Parameters.Append .CreateParameter("@userinumber ", 200, 1, 10, inumber) .Parameters.Append .CreateParameter("@group ", 200, 1, 50, "ISM") .Parameters.Append .CreateParameter("@groupvalue", 200, 1, 50, ismID) .Parameters.Append .CreateParameter("@targettypeparam ", 200, 1, 50, targetType) End With set rs = Server.CreateObject("ADODB.RecordSet") rs = objCommandSec.Execute while not rs.eof response.write (1) response.write (rs("1_Q1")) rs.MoveNext wend response.write (2)</code>
解決策: 正しいレコードセットの処理
核心的な問題は次の行にあります:
<code class="language-asp">rs = objCommandSec.Execute</code>
この不適切な割り当てにより、適切なデータの取得が妨げられます。修正されたアプローチは次のとおりです:
<code class="language-asp">set rs = Server.CreateObject("ADODB.RecordSet") rs.open objCommandSec</code>
rs.open objCommandSec
を使用すると、コマンド オブジェクトを使用してレコードセットが正しく開かれ、データの取得が可能になります。
ストアド プロシージャの相互作用のベスト プラクティス
ストアド プロシージャと対話するクラシック ASP コードの効率と信頼性を向上させるために推奨される実践方法をいくつか紹介します。
コマンド内の直接接続: 別の ADODB.Connection
を作成して開く代わりに、接続文字列を .ActiveConnection
オブジェクトの ADODB.Command
プロパティに直接割り当てます。これによりコードが簡素化され、パフォーマンスが向上します。
SET NOCOUNT ON: INSERT または UPDATE 操作を実行するストアド プロシージャの場合、SQL コードに SET NOCOUNT ON
を含めます。これにより、ストアド プロシージャが影響を受ける行数を返すことがなくなり、レコードセットが途中で閉じられる可能性があります。
簡素化のために配列を検討します: データ処理を簡略化するには、結果を反復処理するために ADODB.Recordset
の代わりに配列を使用することを検討してください。 これにより、多くの場合、コードがより効率的で読みやすくなります。
以上がクラシック ASP のストアド プロシージャからデータを正しく取得するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。