我想将DataDable作为包含以下列的参数传递给存储过程:
Supp_Id int
Del_Methode_Id int
Ord_Ammount int
Promo_Id int
Discount_Ammount Money
现在我想在存储过程中使用这个数据表,并想在它上面声明一个游标。并使用该游标将值按顺序插入数据库表中。
请告诉我如何在存储过程中声明数据表参数,然后在该参数上使用游标?
我想将DataDable作为包含以下列的参数传递给存储过程:
Supp_Id int
Del_Methode_Id int
Ord_Ammount int
Promo_Id int
Discount_Ammount Money
现在我想在存储过程中使用这个数据表,并想在它上面声明一个游标。并使用该游标将值按顺序插入数据库表中。
请告诉我如何在存储过程中声明数据表参数,然后在该参数上使用游标?
首先你需要创建一个类型:
CREATE TYPE dbo.whatever AS TABLE
(
Supp_Id int,
Del_Methode_Id int,
Ord_Amount int,
Promo_Id int,
Discount_Amount Money
);
现在您的存储过程可以将其声明为只读输入参数:
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
为什么你想在这里使用光标,或者认为你需要一个,我不确定。您可以在if 您认为有用的子句中添加一个ORDER BY
子句(并且有一些有意义的排序依据),但否则,如果您真的真的想要一个游标,您应该能够像声明任何其他游标一样声明一个反对桌子。INSERT...SELECT
@datatable