sql >> Databasteknik >  >> RDS >> Sqlserver

Skickar c# DataTable som parameter till lagrad procedur i MS SQL Server 2008

Först måste du skapa en typ:

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

Nu kan din lagrade procedur deklarera detta som en skrivskyddad indataparameter:

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

Varför du vill använda en markör här, eller tror att du behöver en, är jag inte säker på. Du kan lägga till en ORDER BY satsen till INSERT...SELECT om du tror att det kommer att vara användbart (och det finns något vettigt att beställa efter), men annars om du verkligen vill ha en markör här bör du kunna deklarera en mot @datatable precis som du skulle göra för alla andra bord.




  1. problem med databaskodning? Dubbla och enkla citattecken visas med frågetecken

  2. Mysql dynamisk trigger skapande i lagrad procedur

  3. Att passera tabellen som en parameter

  4. Felsök ett fel när du försöker skapa en stor IMDB-modell