Primeiro você precisa criar um tipo:
CREATE TYPE dbo.whatever AS TABLE
(
Supp_Id int,
Del_Methode_Id int,
Ord_Amount int,
Promo_Id int,
Discount_Amount Money
);
Agora seu procedimento armazenado pode declarar isso como um parâmetro de entrada somente leitura:
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 que você quer usar um cursor aqui, ou acha que precisa de um, não tenho certeza. Você pode adicionar um
ORDER BY
cláusula para o INSERT...SELECT
se você acha que isso será útil (e há algo significativo para ordenar), mas caso contrário, se você realmente quiser um cursor aqui, poderá declarar um em @datatable
como faria para qualquer outra mesa.