Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

Passer c # DataTable en tant que paramètre à la procédure stockée dans MS SQL Server 2008

Vous devez d'abord créer un type :

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

Maintenant, votre procédure stockée peut déclarer ceci en tant que paramètre d'entrée en lecture seule :

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

Pourquoi voulez-vous utiliser un curseur ici, ou pensez-vous en avoir besoin, je ne suis pas sûr. Vous pouvez ajouter un ORDER BY clause à INSERT...SELECT si vous pensez que cela sera utile (et qu'il y a quelque chose de significatif à commander), mais sinon, si vous voulez vraiment vraiment un curseur ici, vous devriez pouvoir en déclarer un contre @datatable comme vous le feriez pour n'importe quelle autre table.