sql >> Databáze >  >> RDS >> Sqlserver

Předání c# DataTable jako parametru uložené proceduře v MS SQL Server 2008

Nejprve musíte vytvořit typ:

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

Nyní to vaše uložená procedura může deklarovat jako vstupní parametr pouze pro čtení:

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

Proč zde chcete použít kurzor nebo si myslíte, že jej potřebujete, nejsem si jistý. Můžete přidat ORDER BY klauzule do INSERT...SELECT pokud si myslíte, že to bude užitečné (a je tu něco smysluplného k objednání), ale jinak, pokud opravdu chcete kurzor zde, měli byste být schopni deklarovat jej proti @datatable stejně jako u jakéhokoli jiného stolu.




  1. Jak přeformátovat hodnoty data sloupce MySQL?

  2. Poddotazy s EXISTS vs IN - MySQL

  3. Vytvoření indexu na proměnné tabulky

  4. Jaké jsou rozdíly mezi utf8_general_ci a utf8_unicode_ci?