在存储过程中循环插入查询



是否可以在存储过程中插入类似数据集/数组的内容,然后在存储的proc中使用循环插入语句?我有一个项目可以在表中插入15个记录。目前,我正在用C#代码进行循环。但是有时候15个记录中有1个不会插入。我想做的事情是回滚或删除是当至少1个未插入1时插入的记录。我无法在C#中进行回滚,所以在我的SQL存储过程中可以做到这一点吗?你能给个例子吗?预先感谢您。

一个完美的解决方案是表值参数。C#确实支持使用它们。检查我的早期答案。

但是,由于您使用的是古代技术(SQL 2000),因此不支持它。

帮自己一个忙并升级。

唯一的限制将是一定的应用程序,取决于SQL 2000的安全模型。在我的旧公司,我们有一个应用程序,因此无法升级。另外,他们不愿意花费$。捕获22!

我想问题是有多少个流程称此存储过程。

您可以随时执行以下操作。

1-在C#应用程序中创建动态登台表。

2-加载表格来自C#

的数据

3-将动态登台表的名称传递给Sproc。

4-在交易中,执行以下

BEGIN TRAN
INSERT INTO [TAGET TABLE]
SELECT * FROM [STAGING TABLE];
IF (@@ERROR <> 0)
BEGIN
ROLLBACK;
RETURN;
END
COMMIT

5-最后但并非最不重要的一点是,放下动态陈述表。

我不知道这是否可以带您到任何地方,因为C#应该支持交易。

adonet c#w/transactions的示例

http://www.codeproject.com/articles/10223/ususe-transactions-in-ado-net

最新更新