Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Przekazywanie c# DataTable jako parametru do procedury składowanej w MS SQL Server 2008

Najpierw musisz utworzyć typ:

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

Teraz twoja procedura składowana może zadeklarować to jako parametr wejściowy tylko do odczytu:

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

Dlaczego chcesz użyć tutaj kursora lub uważasz, że go potrzebujesz, nie jestem pewien. Możesz dodać ORDER BY klauzula do INSERT...SELECT jeśli uważasz, że to będzie przydatne (i jest coś sensownego do uporządkowania), ale w przeciwnym razie, jeśli naprawdę chcesz tutaj kursor, powinieneś być w stanie zadeklarować go przed @datatable tak jak przy każdym innym stole.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak wstawić dane z jednej kolumny do innej tabeli

  2. com.microsoft.sqlserver.jdbc.SQLServerException:połączenie TCP/IP z hostem lokalnym, port 1433 nie powiodło się

  3. Czy konieczne jest używanie # do tworzenia tabel tymczasowych na serwerze SQL?

  4. Typ danych zdefiniowany przez użytkownika i #temp table

  5. Dynamicznie tworzony SQL a parametry w SQL Server