【发布时间】:2014-06-03 22:37:39
【问题描述】:
我有一个 Shell 批处理,我想在 Unix 环境中使用 Oracle SQL plus 提示符执行一个 sql 查询。
查询有一个参数,该参数必须动态更改宽度批处理执行参数(一个日期)。
这是 MY_QUERY.sql 文件中的查询:
SELECT ID || ';' || NAME FROM PERSONS WHERE BIRTH=&1
而 Unix Shell 脚本是:
LOGIN=$1
PASSWORD=$2
OUTPUT_FOLDER=$3
DATE=$4
echo "Date_birth: '${DATE}'"
echo exit | sqlplus ${LOGIN}/${PASSWORD} @"../sql/MY_QUERY.sql" "'${DATE}'" >> "${OUTPUT_FOLDER}/Output.csv"
我发现 Output.csv 文件是空的。但是当我直接在查询中输入日期时,我得到了想要的输出。
SELECT ID || ';' || NAME FROM PERSONS WHERE BIRTH='31/12/2014'
PS:日期不为空或null,因为它是使用上面的行显示的
echo "Date_birth: '${DATE}'"
PS:当我直接使用SqlPlus提示@c:\sql\MY_QUERY.sql '31/12/2014'执行这一行时,也会显示想要的结果@
【问题讨论】:
标签: sql oracle shell parameter-passing sqlplus