我需要在bash的命令行上向程序发送格式正确的日期比较WHERE子句。
一旦进入被调用的程序,WHERE子句应该对Oracle有效,并且看起来应该是这样的:
highwater>TO_DATE('11-Sep-2009', 'DD-MON-YYYY')
日期值在变量中。我尝试了各种引号和反斜杠的组合。而不是混淆问题并举出我的错误的例子,我希望得到一个原始的准确答案,没有被dreck玷污。
如果我在Perl中编写它,我认为这个任务看起来像这样:
$hiwaterval = '11-Sep-2009';
$where = "highwater>TO_DATE(\'$hiwaterval\', \'DD-MON-YYYY\')";
如何在bash中实现相同的效果?
答案 0 :(得分:3)
hiwaterval='11-Sep-2009'
where="highwater > TO_DATE('$hiwaterval', 'DD-MON-YYYY')"
如果要在当前shell中显示,请在最终变量设置之前添加“export”。
答案 1 :(得分:0)
您是否尝试过使用双蜱?喜欢highwater> TO_DATE('''11-Sep-2009'',''DD-MON-YYYY'')。只是一个建议。我还没试过。
答案 2 :(得分:0)
您可以像这样分配where子句:
export WHERECLAUSE=`echo "where highwater >TO_DATE('11-Sep-2009', 'DD-MON-YYYY')"`
(在echo语句周围有反引号 - 它们在我的编辑器中没有出现......)
使用以下形式的shell脚本:
sqlplus /nolog <<EOS
connect $USERNAME/$PASSWD@$DB
select * from test $WHERECLAUSE
;
exit
EOS