Data Provider for .NET Guide (v11)

.NET オブジェクトとメソッドの選択

ここでは、.NET オブジェクトとメソッドを選択して使用するときに、システムのパフォーマンスを最適化する方法を説明します。

ストアド プロシージャの引数としてのパラメーター マーカーの使用

ストアド プロシージャを呼び出す場合は、リテラル引数ではなく、常に、引数マーカーのパラメーター マーカーを使用します。

Command オブジェクトの CommandText プロパティにストアド プロシージャ名を設定する場合、そのリテラル引数を CommandText へ物理的にコーディングしないでください。たとえば、次のようなリテラル引数は使いません。

{call expense (3567, 'John', 987.32)} 

ADO.NET データ プロバイダーでは、データベース サーバーのストアド プロシージャを呼び出すことができますが、その際プロシージャをその他の SQL クエリとして実行します。ストアド プロシージャを SQL クエリとして実行すると、データベース サーバーがステートメントを解析し、引数の型を検証し、引数を正しいデータ型に変換します。

次の例で、アプリケーション プログラマは getCustName の引数を整数 12345 であると見なすでしょう。

{call getCustName (12345)}  

しかし、SQL は常に文字列としてデータベース サーバーに送信されます。データベース サーバーが SQL クエリを解析し、引数値を分離しても結果はまだ文字列です。データベース サーバーで文字列 "12345" を整数値 12345 に変換する必要があります。パラメーター マーカーを使用することで文字列変換の必要がなくなるので、データベース サーバーでの処理量を減らすことができます。

{call getCustName (?)}  

データの取得

.NET アプリケーションの設計