sql >> Database >  >> RDS >> Sqlserver

C# DataTable doorgeven als parameter aan opgeslagen procedure in MS SQL Server 2008

Eerst moet je een type aanmaken:

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

Nu kan uw opgeslagen procedure dit declareren als een alleen-lezen invoerparameter:

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

Waarom je hier een cursor wilt gebruiken, of denkt dat je er een nodig hebt, weet ik niet zeker. U kunt een ORDER BY . toevoegen clausule toe aan de INSERT...SELECT als je denkt dat dat nuttig zal zijn (en er is iets zinnigs om door te bestellen), maar anders, als je hier echt een cursor wilt, zou je er een moeten kunnen declareren tegen @datatable net als bij elke andere tafel.




  1. MySql-query erg traag

  2. mysqldump onbekende optie geen piep

  3. Maak een schaalbaar databaseschema voor het opslaan van golfscores

  4. Hoe te voorkomen dat de time-out van de vergrendeling de uitzondering heeft overschreden.?