Per prima cosa devi creare un tipo:
CREATE TYPE dbo.whatever AS TABLE
(
Supp_Id int,
Del_Methode_Id int,
Ord_Amount int,
Promo_Id int,
Discount_Amount Money
);
Ora la tua procedura memorizzata può dichiararlo come parametro di input di sola lettura:
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
Perché vuoi usare un cursore qui, o pensi di averne bisogno, non sono sicuro. Puoi aggiungere un ORDER BY
clausola al INSERT...SELECT
se pensi che possa essere utile (e c'è qualcosa di significativo da ordinare), ma altrimenti se vuoi davvero un cursore qui dovresti essere in grado di dichiararne uno contro @datatable
proprio come faresti per qualsiasi altro tavolo.