我有一个批处理文件,它运行多个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');
但它会截断第二个值
任何线索如何包含逗号??
答案 0 :(得分:1)
终于找到了办法
输入文件 -
var1=('tommy','jim')
从sql文件中删除大括号
select * from table where name in &1;
这个有效,我不知道为什么拿一个逗号是这样的问题,应该有一些方法来传递逗号! 如果有人发现,请告诉我。
由于
答案 1 :(得分:0)
波浪号(~
)从变量中删除引号。
尝试在输入文件中使用var1='tommy','jim'
,在批处理脚本中使用set param=%1
。