Pergunta

Eu preciso enviar uma comparação data formatado corretamente cláusula WHERE para um programa na linha de comando em bash.

Uma vez que começa dentro do programa chamado, a cláusula WHERE deve ser válido para Oracle, e deve olhar exatamente como isto:

highwater>TO_DATE('11-Sep-2009', 'DD-MON-YYYY')

O valor de data é em uma variável. Eu tentei uma variedade de combinações de citações e barras invertidas. Ao invés de confundir a questão e dar exemplos de meus erros, eu estou esperando por uma resposta precisa intocada maculado por dreck.

Se eu fosse escrever isso em Perl, a atribuição eu acho parecido com este:

$hiwaterval = '11-Sep-2009';
$where = "highwater>TO_DATE(\'$hiwaterval\', \'DD-MON-YYYY\')";

Como faço para conseguir o mesmo efeito em bash?

Foi útil?

Solução

hiwaterval='11-Sep-2009'

where="highwater > TO_DATE('$hiwaterval', 'DD-MON-YYYY')"

opcionalmente adicionar "exportação" antes definição da variável final, se é para ser ourside visível o shell atual.

Outras dicas

Você já tentou usar usando carrapatos duplas? Como highwater> TO_DATE ( '' 11-Sep-2009 '', '' DD-MON-YYYY ''). Apenas uma sugestão. Eu não tentei-lo.

Você pode atribuir a cláusula onde assim:

export WHERECLAUSE=`echo "where highwater >TO_DATE('11-Sep-2009', 'DD-MON-YYYY')"`

(com acentos graves em torno da declaração de eco - eles não estão aparecendo no meu editor aqui ...)

que trabalha com um shell script da forma:

sqlplus /nolog <<EOS
connect $USERNAME/$PASSWD@$DB
select * from test $WHERECLAUSE
;
exit
EOS
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top