通过批处理文件将varchar参数传递给sql文件

时间:2011-08-16 09:45:26

标签: sql batch-file comma

我有一个批处理文件,它运行多个sql文件并将参数传递给它们。 输入参数存储在txt文件中,该文件由批处理文件读取。

我正在尝试将varchar值传递给SQL的IN子句。

例如

在我的输入文件我这个条目

var1="'tommy','jim'"

在批处理文件中

<code to read file , assuming %1 has the var1 value>
set param=%~1

sqlplus %DBCONN% @%programFolder%\test.sql %param%

test.sql (名称为varchar2)

select * from table where name in (&1);

这会出错,说无效号码 因为它试图运行

select * from table where name in (tommy);


如果我在sql stmt之前回显,它会显示'tommy','jim' 但是在sql中它删除了jim和单引号......

请帮忙!


现在我将输入文件中的条目编辑为 var1="'''tommy''','''jim'''"

它变为select * from table where name in ('tommy');

但它会截断第二个值

任何线索如何包含逗号??

2 个答案:

答案 0 :(得分:1)

终于找到了办法

输入文件 - var1=('tommy','jim')

从sql文件中删除大括号 select * from table where name in &1;

这个有效,我不知道为什么拿一个逗号是这样的问题,应该有一些方法来传递逗号! 如果有人发现,请告诉我。

由于

答案 1 :(得分:0)

波浪号(~)从变量中删除引号。

尝试在输入文件中使用var1='tommy','jim',在批处理脚本中使用set param=%1