【问题标题】:Pass varchar param to sql file via Batch file通过批处理文件将 varchar 参数传递给 sql 文件
【发布时间】:2011-08-16 09:45:26
【问题描述】:

我有一个批处理文件,它运行多个 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');

但它会截断第二个值

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

【问题讨论】:

  • 你能分享更多关于你如何解决这个问题的细节吗?我有以下代码 //read input file- ('pdf','csv','jpeg','png') set /P ALLOWED_TYPES=

标签: sql batch-file comma


【解决方案1】:

终于找到方法了

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

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

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

谢谢

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

    • 如果我删除波浪号,参数本身会被批量分离。 echo %var1% 之前 sql 只显示 'tommy'
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-09-06
    • 1970-01-01
    • 1970-01-01
    • 2016-07-03
    • 2019-01-04
    相关资源
    最近更新 更多