2016-08-09 6 views
0

나는 어디에서나보고 있었고 게시물은 echo exit | sqlplus @script.sql을 파이프하도록 제안했지만 내 스크립트에는 입력을받는 PL/SQL 문이 들어 있으므로 PROMPT 메시지가 출력되자 마자 exit이 실행되고 스크립트가 종료됩니다.SQLPlus에서 스크립트를 종료 하시겠습니까?

다음은 리눅스 전화

alias sql 'sqlplus -s user/pass' 

sql @test.sql 

스크립트는 잘 실행하고 DB에 INSERT을 수행하지만 다음 그냥 실행하면 내가 출구를 입력 기다립니다. 아이디어가 있으십니까?

+0

스크립트를 수정할 수 없습니까? –

답변

1

분명히 할 일은 exit 끝에 스크립트를 수정하는 것입니다. 당신은 당신이 그것을 수행하는 임시 파일, 예를 만들 수 있습니다 할 수없는 경우

(cat test.sql && echo exit) > /tmp/test_$$.sql 
sql @/tmp/test_$$.sql 
rm -f /tmp/test_$$.sql 

파일 이름의 $$는 현재 프로세스의 ID (PID)로 치환, 그래서 스크립트는 두 번 실행되는 경우 동시에 각각은 다른 파일 이름을 갖습니다. 그런 다음 끝에 제거됩니다. (보호 제거를 먼저 수행하거나 이전에 제거가 실패한 경우를 대비해 보호 삭제를 수행 할 수 있습니다.

+0

스크립트 끝에서 exit를했는데 pl/sql이 그것을 인식하지 못했습니다. – Stefan

+0

종료는 스크립트의 끝에서 PL/SQL (또는 일반 SQL) 문 뒤에 있어야합니다. 스크립트가 PL/SQL 블록으로 끝나고'/'로 끝나면 이탈은 * 이후에 * 새로운 행에 있습니다. –