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

配列をSQLServerストアドプロシージャに渡す

    SQLServer2008以降

    次のようにSQLServerでタイプを作成します。

    CREATE TYPE dbo.ProductArray 
    AS TABLE
    (
      ID INT,
      Product NVARCHAR(50),
      Description NVARCHAR(255)
    );
    

    SQL Serverで手順を変更します:

    ALTER PROC INSERT_SP
    @INFO_ARRAY AS dbo.ProductArray READONLY
    AS
    BEGIN
        INSERT INTO Products SELECT * FROM @INFO_ARRAY
    END
    

    次に、DataTableを作成する必要があります C#で渡す値を持つオブジェクト:

    DataTable dt = new DataTable();
    //Add Columns
    dt.Columns.Add("ID");
    dt.Columns.Add("Product");
    dt.Columns.Add("Description");
    //Add rows
    dt.Rows.Add("7J9P", "Soda", "2000ml bottle");
    
    using (conn)
    {
        SqlCommand cmd = new SqlCommand("dbo.INSERT_SP", conn);
        cmd.CommandType = CommandType.StoredProcedure;
        SqlParameter dtparam = cmd.Parameters.AddWithValue("@INFO_ARRAY", dt);
        dtparam.SqlDbType = SqlDbType.Structured;
    }
    


    1. 時間部分を無視してDATETIMEとDATEを比較します

    2. SQLintersectionのためにラスベガスに参加して$100を節約

    3. Ubuntuでpostgresqlを完全にパージして再インストールする方法は?

    4. PostgreSQLで列を動的に生成する