【发布时间】:2022-09-27 10:59:59
【问题描述】:
我有 2 个脚本 - 一个 shell 和一个 sql。
我的 shell 脚本与此类似:
export nbr=&1
runsql script_name.sql
我试图在运行脚本时为 nbr 传递参数。
对应的sql脚本如下:
insert into table1
select * from table2
where year=\'&1\'
我得到如下错误:
\"enter value for year: old 22: where year=\'$1\')
new 22: where year=\'commit\')\"
-
$nbr无处使用... -
我将 nbr 作为占位符来传递在 sql 脚本中使用的参数 \"year\'。这是导致错误的原因吗?
-
您还没有显示
commit被传递,那么它来自runsql是什么 - 另一个脚本或此脚本中的函数?还是在调用 shell 脚本时在命令行上?输出是(部分 - 提示来自哪里?)您使用set verify on看到的内容,但您显示的是$1而不是&1。所以这似乎不是你真正在运行的。如果您显示您的实际代码,而不是显着不同的东西,那将真的很有帮助。 -
Runsql 是另一个脚本中的一个函数,它具有运行所需的所有必要的 orasql 连接等。日志文件显示其中 &1 被替换为 \"commit\" 的输出,这实际上来自 runsql 脚本。我更正了$。对于那个很抱歉!我基本上只是想将数据从一个表复制到另一个表,但它有数亿条记录,所以我试图按年插入它们。
标签: sql bash oracle shell scripting