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.