【发布时间】:2013-10-17 08:00:40
【问题描述】:
好的,所以我有一个我正在尝试运行的脚本,它创建一个带有更新语句的文件,并将该文件通过管道传递给 sqlplus 以执行。我知道更新语句是有效的,它创建发送到 sqlplus 的文件是正确的,因为我只在 SQL Plus 中运行了该代码。当我执行脚本时它只是不起作用。我和我的团队已经看过这个并尝试了多种方法,但就是无法弄清楚为什么它似乎没有执行。任何帮助都会很棒。谢谢!
# Update Cycle DUE_DATE_TIME field to target run date
UPDATE_SQL="UPDATE CYCLE SET DUE_DATE_TIME = to_date('${TARGET_RUN_DATE}', 'YYYYMMDD') - 1"
echo $UPDATE_SQL >> ${WORK_AREA}/update_cycle_table_${PROCESS_ID}.sql
echo "${USER_NAME}@${DATABASE}
set line 200
start ${WORK_AREA}/update_cycle_table_${PROCESS_ID}.sql
commit
exit"|sqlplus -s > /dev/null
if [[ $? -eq 0 ]]
then
print "Updated Cycle successfully\n\n"
fi
好的,所以我解决了这个问题,让它变得更简单一些,而不是仅仅将它写入一个文件并在 SQLPlus 中运行它,我只是在管道中对 SQLPlus 进行了更新。我之前尝试过这样做,但没有成功,但我想这次我所做的一切都奏效了。感谢大家的意见!
【问题讨论】:
-
删除
> /dev/null,以便您查看是否有任何错误消息。$?是否也设置为0?祝你好运。 -
我之前删除了 /dev/null 并且没有错误。 “更新周期成功”打印出来了,所以 $?设置为零@shellter
-
很小的事情,但它可能会有所作为,
echo "$UPDATE_SQL" >> ${WORK_AREA}/....?嘿,为什么>>只需要>。祝你好运。