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

MS SQL Server 2008 のストアド プロシージャにパラメータとして c# DataTable を渡す

    まず、タイプを作成する必要があります:

    CREATE TYPE dbo.whatever AS TABLE
    (
      Supp_Id          int, 
      Del_Methode_Id   int,
      Ord_Amount       int,
      Promo_Id         int,
      Discount_Amount  Money
    );
      

    これで、ストアド プロシージャはこれを読み取り専用の入力パラメーターとして宣言できます。

    CREATE PROCEDURE dbo.do_whatever
      @datatable dbo.whatever READONLY
    AS
    BEGIN
      SET NOCOUNT ON;
    
      INSERT dbo.destination_table(column_list)
        SELECT column_list FROM @datatable;
    END
    GO
      

    ここでカーソルを使用する理由、またはカーソルが必要だと思う理由はわかりません。 ORDER BY を追加できます INSERT...SELECT の句 それが便利だと思う場合 (そして、順序付けに意味のあるものがある場合)、そうでなければ、本当にここにカーソルが必要な場合は、 @datatable に対して宣言できるはずです 他のテーブルと同じように。




    1. .NETからOracleを使用するにはどうすればよいですか?

    2. アラビア文字がデータベースに挿入されないのはなぜですか?

    3. 巨大なデータテーブルの文字セットを変更するためのより良い方法はどれですか?

    4. 複数行の最大値に基づいて単一行を選択する方法