문제

Bash의 명령 줄에있는 프로그램에 절차를 적절히 형식화 된 날짜 비교를 보내야합니다.

호출 프로그램에 들어가면 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에서 동일한 효과를 어떻게 달성합니까?

도움이 되었습니까?

해결책

hiwaterval='11-Sep-2009'

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

선택적으로 최종 변수 설정 전에 "내보내기"를 추가하십시오.

다른 팁

이중 진드기를 사용하여 사용해 보셨습니까? Highwater> to_date ( ''11-sep-2009 '', ''dd-mon-yyyy '')처럼. 단지 제안입니다. 나는 그것을 시도하지 않았다.

다음과 같은 WHERE 절을 할당 할 수 있습니다.

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

(에코 진술 주위에 백 틱이 있으면 - 여기에 편집자에 표시되지 않습니다 ...)

양식의 쉘 스크립트와 함께 작동합니다.

sqlplus /nolog <<EOS
connect $USERNAME/$PASSWD@$DB
select * from test $WHERECLAUSE
;
exit
EOS
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top