带参数的ExecuteNonQuery

时间:2010-08-03 02:01:47

标签: sql parameters

我必须处理包含大量sql语句的文件。问题是sql语句包含参数。

E.g。该文件看起来像这样

declare @var1 as nvarchar;
set @var1 = 'value';
insert into table (field1, field2, field3) 
  values ('value1', 'value2', @var1);

用下一组三行重复。

我希望我能够将文件解析为三个行块并使用ExecuteNonQuery将其解除,但问题是sql语句包含一个参数。

注意:在我的示例中,@ var1是脚本中的值,它接收服务器变量。

2 个答案:

答案 0 :(得分:0)

听起来像是一个SQL脚本文件。

你不能只使用ISQL或SQLCmd吗?

[附录]

抱歉,我提到了一个MSSQL后端,因为你提到了ExecuteNonQuery。

如果这些陈述是一致的,您可以内联该值。

* read and ignore first line. 
* read 2nd line and strip out value between quotes.
* read 3rd line, replace the @x string with the value from line 2.
* execute modified 3rd line.
* repeat

如果数据类型不同,则需要使用声明的类型来读取和插入值(即不要使用数字引号)。

从根本上说,这确实是一个糟糕的设计和/或组织问题。

答案 1 :(得分:0)

通常,当您运行现有SQL脚本时,您将在GO上拆分并执行这些大块。我没有尝试使用DECLARE语句执行此操作,您是否尝试按原样执行脚本 - 即您发布的块?