将c#DataTable作为参数传递给MS SQL Server 2008中的存储过程
我想将一个可数据的作为参数传递给一个存储过程将c#DataTable作为参数传递给MS SQL Server 2008中的存储过程,sql,sql-server,sql-server-2008,datatable,cursor,Sql,Sql Server,Sql Server 2008,Datatable,Cursor,我想将一个可数据的作为参数传递给一个存储过程 Supp_Id int Del_Methode_Id int Ord_Ammount int Promo_Id int Discount_Ammount Money 现在,我想在存储过程中使用这个数据表,并在其上声明一个游标。并使用该光标将值按顺序插入数据库表 请告诉我如何在存储过程中声明datatable参数,然后在该参数上使用光标?首先您需要创建一个类型: CREATE TYPE dbo.what
Supp_Id int
Del_Methode_Id int
Ord_Ammount int
Promo_Id int
Discount_Ammount Money
现在,我想在存储过程中使用这个数据表,并在其上声明一个游标。并使用该光标将值按顺序插入数据库表
请告诉我如何在存储过程中声明datatable参数,然后在该参数上使用光标?首先您需要创建一个类型:
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
为什么你想在这里使用光标,或者认为你需要一个,我不确定。您可以在
INSERT…SELECT
中添加一个orderby
子句,如果您认为该子句有用(并且有一些有意义的订购依据),但是,如果你真的想要一个游标在这里,你应该能够根据@datatable
声明一个游标,就像对任何其他表一样。有很多代码示例(在谷歌的搜索引擎下找到)。去吧,学着自己去寻找简单问题的答案