将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
声明一个游标,就像对任何其他表一样。

有很多代码示例(在谷歌的搜索引擎下找到)。去吧,学着自己去寻找简单问题的答案