通过批处理文件将 varchar 参数传递给 sql 文件
Posted
技术标签:
【中文标题】通过批处理文件将 varchar 参数传递给 sql 文件【英文标题】:Pass varchar param to sql file via Batch file 【发布时间】: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= 【参考方案1】:终于找到方法了
输入文件 -
var1=('tommy','jim')
从 sql 文件中删除大括号
select * from table where name in &1;
这行得通,我不知道为什么带逗号是个问题,应该有某种方法来传递逗号! 如果有人知道,请告诉我。
谢谢
【讨论】:
【参考方案2】:波浪号 (~
) 从变量中去除引号。
尝试在输入文件中使用var1='tommy','jim'
,在批处理脚本中使用set param=%1
。
【讨论】:
如果我删除波浪号,参数本身会被批量分离。echo %var1%
之前 sql 只显示 'tommy'以上是关于通过批处理文件将 varchar 参数传递给 sql 文件的主要内容,如果未能解决你的问题,请参考以下文章