2

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

我正在尝试将 varchar 值传递给INSQL 子句。

例如

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

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');

但它会截断第二个值

任何线索如何包含逗号?

4

2 回答 2

1

终于找到方法了

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

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

这行得通,我不知道为什么带逗号是个问题,应该有某种方法可以传递逗号!如果有人发现请告诉我。

谢谢

于 2011-08-17T01:59:43.813 回答
0

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

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

于 2011-08-16T10:12:47.537 回答