ホームページ > データベース > mysql チュートリアル > パラメータの配列を SQL Server ストアド プロシージャに効率的に渡すにはどうすればよいですか?

パラメータの配列を SQL Server ストアド プロシージャに効率的に渡すにはどうすればよいですか?

Susan Sarandon
リリース: 2025-01-10 17:27:40
オリジナル
591 人が閲覧しました

How Can I Pass an Array of Parameters to a SQL Server Stored Procedure Efficiently?

テーブル値パラメーター (TVP) を使用して、パラメーター配列をストアド プロシージャに効率的に渡します

ストアド プロシージャを使用する場合、パラメーターの配列を渡すことは非常に一般的なタスクです。この記事では、識別子 (ID) の配列をストアド プロシージャに渡して特定の操作を実行する方法について説明します。

問題の説明

ID の配列をストアド プロシージャに渡す必要があります。ストアド プロシージャは、配列内の ID に一致する行を除くテーブル内のすべての行を削除します。

テーブル値パラメーターを使用したソリューション

SQL Server 2008 以降では、テーブル値パラメーター (TVP) により、ストアド プロシージャに配列を渡す効率的な方法が提供されます。 TVP を使用してこれを実装する方法は次のとおりです:

1. TVP を作成します

ID 配列を表す TVP を作成します:

<code class="language-sql">CREATE TYPE T1Ids AS Table (
    t1Id INT
);</code>
ログイン後にコピー

2. ストアド プロシージャ

を作成します。

TVP を使用してストアド プロシージャを作成します:

<code class="language-sql">CREATE PROCEDURE dbo.FindMatchingRowsInTable1( @Table1Ids AS T1Ids READONLY )
AS
BEGIN
    -- 您的存储过程逻辑在此处
END</code>
ログイン後にコピー

3. TVP データを準備します

アプリケーションで、TVP データを DataTable に準備します。

<code class="language-csharp">DataTable t1Ids = new DataTable();
t1Ids.Columns.Add("t1Id", typeof(int));
foreach (int id in listOfIdsToFind)
{
    t1Ids.Rows.Add(id);
}</code>
ログイン後にコピー

4. TVP をストアド プロシージャ

に渡します。

ストアド プロシージャを呼び出すときに、TVP をパラメータとして渡します。

<code class="language-csharp">SqlParameter sqlParameter = new SqlParameter("Table1Ids", t1Ids);
findMatchingRowsInTable1.Parameters.Add(sqlParameter);</code>
ログイン後にコピー

5. ストアド プロシージャ

を実行します。

ストアド プロシージャを実行し、結果を処理します。

TVP を使用する利点

  • タイプセーフなパラメータの受け渡し
  • データのシリアル化および逆シリアル化と比較してパフォーマンスが向上しました
  • 読みやすく使いやすい構文

このアプローチでは、パラメーターの配列をストアド プロシージャに簡単に渡すことができるため、データ セットに対して複雑な操作を実行するタスクが簡素化されます。

以上がパラメータの配列を SQL Server ストアド プロシージャに効率的に渡すにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート