ASPとストアドプロシージャに関する多くの記事がありますが、著者が実際にそれを実践しているとは思いません。私が最初にいたときに多くの関連情報を読みましたが、提供された方法の多くは実際にはそうではないことがわかりました。単純なアプリケーションの場合、これらの材料は役立つ場合がありますが、それは単に同じであり、互いに盗用し、わずかに複雑なアプリケーションがあいまいになります。
今、私は基本的に、ストアドプロシージャを呼び出すことによりSQLServerにアクセスします。次のテキストは実践の要約であり、誰にとっても役立つことを願っています。
ストアドプロシージャは、データベースに実行可能なオブジェクトとして保存されている1つ以上のSQLコマンドです。
定義は常に抽象的です。ストアドプロシージャは、実際には特定の操作を完了できるSQLステートメントのセットですが、この一連のステートメントはデータベースに配置されます(ここではSQLServerについてのみ説明します)。ストアドプロシージャを作成し、ASPでストアドプロシージャを呼び出すと、SQLステートメントとASPコードの混合を避けることができます。これを行うことには少なくとも3つの利点があります。
まず、効率を大幅に改善します。ストアドプロシージャ自体は非常に高速であり、ストアドプロシージャを呼び出すことで、データベースとの相互作用の数を大幅に減らすことができます。
第二に、安全性を向上させます。 SQLステートメントがASPコードで混合されている場合、コードが失われると、ライブラリ構造が失われることを意味します。
第三に、SQLステートメントの再利用を助長します。
ASPでは、通常、ストアドプロシージャはコマンドオブジェクトを介して呼び出されます。さまざまな状況によると、この記事では他の呼び出し方法も紹介しています。説明の便利さのために、ストアドプロシージャの入力と出力に基づいて、次の簡単な分類が行われます。
1.単一のレコードセットのストアドプロシージャのみを返す
次のストアドプロシージャがあるとします(この記事の目的はT-SQL構文を説明することではないため、ストアドプロシージャはコードのみを提供し、説明しません)。
/*sp1*/
コードコピーは次のとおりです。
createproceduredbo.getUserList
として
setnocounton
始める
[fromdbo。[userinfo]を選択します
終わり
行く
上記のストアドプロシージャは、userInfoテーブルのすべてのレコードを取得し、レコードセットを返します。コマンドオブジェクトを介してストアドプロシージャを呼び出すためのASPコードは次のとおりです。
'**コマンドオブジェクトを介して手順を呼び出す**
Dimmycomm、Myrst
setmycomm = server.createObject( "adodb.command")
mycomm.activeconnection = myconstr'myconstはデータベース接続文字列です
mycomm.commandtext = "getUserList" 'ストアドプロシージャ名を指定します
mycomm.commandtype = 4 'は、これがストアドプロシージャであることを示します
mycomm.prepared = true 'は、SQLコマンドを最初にコンパイルする必要があります
setmyrst = mycomm.execute
setMycomm =何もない
ストアドプロシージャによって取得されたレコードセットは、Myrstに割り当てられます。次に、Myrstを操作できます。
上記のコードでは、CommandTypeプロパティはリクエストのタイプを示します。値と説明は次のとおりです。