sql >> データベース >  >> RDS >> Sqlserver

文字列のリストをストアド プロシージャに渡す

    これは実際に投稿したリンクの複製です。値のリストを解析しようとする代わりに、テーブル値パラメーターを渡します。

    最初にデータベースにパラメータの型を作成します (一度だけ)。

    CREATE TYPE [dbo].[IdList] AS TABLE(
        [Id] int NULL
    );
    

    次に、このパラメータを受け入れるプロシージャを作成します:

    CREATE PROCEDURE [dbo].[GetWorkspaceMapDetailsForUserByGroups]
        @workspaceID int,
        @groupIds IdList READONLY
    AS
    BEGIN
    SELECT 
      m.*
    FROM GeoAppMapDef m 
        inner join @groupIds on [email protected]
    WHERE
        m.workspaceID = @workspaceID
        and m.IsDeleted = 0
    END
    

    クライアント側で、Id という単一の int 型の列を持つ DataTable を作成します。 、必要な ID を入力してから、@groupIds の値として使用します パラメータ

    var table = new DataTable();
    table.Columns.Add("Id", typeof(int));
    
    for (int i = 0; i < 10; i++)
        table.Rows.Add(i);
    
    var pList = new SqlParameter("@groupIds", SqlDbType.Structured);
    pList.TypeName = "dbo.IdList";
    pList.Value = table;
    

    いくつかの変更を加えて、重複した質問からこれをコピーしました。



    1. MyISAMとInnoDBの違いは何ですか?

    2. 時間間隔の計算方法は?

    3. SELECTステートメントからのMySQLストアドプロシージャ変数

    4. SQLサーバーの画像フィールドに16進文字列値を挿入すると、余分な0が追加されます