小编典典

将c#DataTable作为参数传递给MS SQL Server 2008中的存储过程

sql

我想将 DataDable 传递给 存储过程作为 以下各列的 参数

Supp_Id          int
Del_Methode_Id   int
Ord_Ammount      int
Promo_Id         int
Discount_Ammount Money

现在,我想在存储过程中使用此数据表,并要在其上声明一个游标。然后使用该光标将值顺序插入数据库表中。

请告诉我如何在存储过程中 声明datatable参数* ,然后在该 参数 上使用 游标*


阅读 224

收藏
2021-03-23

共1个答案

小编典典

首先,您需要创建一个类型:

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

我不确定为什么要在这里使用游标,或者认为您需要一个游标。如果您认为这很有用(可以在其中进行一些有意义的排序),则可以在ORDERBY子句中添加一个子句INSERT...SELECT,但是否则,如果您真的想要在此处使用游标,则应该能够@datatable像针对其他游标一样声明一个游标。桌子。

2021-03-23