SQL * Plus 명령 줄 프로그램 (Oracle)에 내 KornShell (ksh) 스크립트에서 SQL 명령을 전달하려고했지만 내 $MY_VAR
변수가 실패한 것처럼 보입니다. 결의. $MY_VAR
은 문자열 값입니다.변수가 PL-SQL 문 안에서 해결되지 않습니다
sqlplus -s <<EOF>> $LOG_FILE
$MY_SCHEMA
UPDATE my_table SET run_flag = 'I', start_time = to_char(sysdate, 'DD-Mon-YYYY HH24:MI:SS') WHERE (process_id = '$MY_VAR' AND run_flag != 'F');
COMMIT;
EOF
내가 할 수있는 성공적으로 $MY_VAR
변수 밖으로 echo
, 그래서 나는 변수가 채워 것을 볼 수 있지만, 내가 인수로 제공하고있는 SQL 명령에 변수를 삽입 할 때 해결 될 것 같지 않습니다 SQL * Plus 프로그램에 추가하십시오. 스크립트의 로그 파일은 다음을 출력합니다.
0 개의 행이 업데이트됩니다. 완료했다.
는 SQL은 우리가 성공적으로 ($MY_VAR
에 대한 하드 코딩 된 값이기는하지만) SQL Developer의 명령을 실행할 수있는 유효한 것으로 보인다.
내가 여기에없는 것에 대한 아이디어가 있습니까?
는
아마도 변수 이름 주위에 따옴표를 제거해보십시오. – Mikhail
변수가 문자열 값이고 process_id의 데이터 유형이 CHAR (5)임을 언급하는 것을 잊어 버렸습니다. 작은 따옴표를 제거하면 숫자처럼 취급되지 않으므로 열 유형이 문자열이므로 오류가 발생합니다. 나는 그것에게 시도를 줄 것이다. –
시도해 봤는데 변수 주위에 작은 따옴표를 제거 할 때 같은 오류가 발생했습니다. –