Primero necesitas crear un tipo:
CREATE TYPE dbo.whatever AS TABLE
(
Supp_Id int,
Del_Methode_Id int,
Ord_Amount int,
Promo_Id int,
Discount_Amount Money
);
Ahora su procedimiento almacenado puede declarar esto como un parámetro de entrada de solo lectura:
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
Por qué quiere usar un cursor aquí, o cree que necesita uno, no estoy seguro. Puede agregar un ORDER BY
cláusula al INSERT...SELECT
si cree que será útil (y hay algo significativo para ordenar), pero de lo contrario, si realmente quiere un cursor aquí, debería poder declarar uno contra @datatable
como lo harías con cualquier otra mesa.