Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Предаване на c# DataTable като параметър към съхранена процедура в MS SQL Server 2008

Първо трябва да създадете тип:

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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. CLR строга сигурност на SQL Server 2017

  2. ЗА XML PATH(''):Екраниране на специални символи

  3. Как да се свържете с няколко SQL сървъра с едно щракване (група регистрирани сървъри) - SQL Server / TSQL урок, част 5

  4. INSERT INTO @TABLE EXEC @query със SQL Server 2000

  5. Замяна на няколко знака в SQL