Korn 쉘 스크립트에서 SQL * Plus (10g) 스크립트를 호출하려고합니다.쉘 스크립트에서 ACCEPT를 포함하는 SQL * Plus 스크립트에 매개 변수 전달
SQL * Plus 스크립트를 수정할 수 없으며 SQL * Plus ACCEPT
명령이 포함되어 있습니다.
이 ACCEPT 명령 변수 (7788
)에 대한 고유 한 인수를 Korn 쉘 스크립트를 통해 SQL * Plus 스크립트에 전달하려고합니다.
#!/usr/bin/ksh
# wrapping_shell_script.sh
# Expecting one and exactly one parameter to be passed, the password for SCOTT
if [ $# -ne 1 ]
then
echo "USAGE: wrapping_shell_script.sh <SCOTT_Password>"
exit 1
fi
passwd="$1"
echo `date`
sqlplus -s scott/${passwd} @oracle_code.sql << EOF1
7788
EOF1
:
SET VERIFY OFF
ACCEPT abc PROMPT "Enter an empno:"
SELECT e.ename
FROM emp e
WHERE TO_CHAR(e.empno) = '&abc'
;
그리고 여기이 전화를 만들기 위해 Korn 쉘 스크립트 (wrapping_shell_script.sh
)에서 내 시도 : 여기
oracle_code.sql
은 SQL * Plus를 스크립트의 깍 다운 버전입니다
$ wrapping_shell_script.sh tiger
Fri Oct 31 16:23:20 CDT 2014
Enter an empno:
no rows selected
$
,369 :
은 여기가 내가 Korn 쉘 명령 행에서 쉘 스크립트를 실행할 때의 모습입니다
7788
값은 SQL * Plus 스크립트의 abc
어휘 매개 변수로 전달되지 않습니다.
지정하는 값이 전달되고 호출 된 SQL * Plus 스크립트가 실행되도록 Korn 셸 스크립트를 어떻게 변경합니까?
감사합니다.
+1 잘 형성된 질문의 경우입니다. 이것은 괜찮아 보입니다, 제 생각에는 sqlplus가 stdin 대신에 키보드 (또는 똑같이 대다수)를 읽는 것입니다. 하지만, 확실하게하려고 했습니까? echo 7788 | sqlplus ...'? 행운을 빕니다. – shellter
코드를 복사/붙여 넣었습니다. 코드가 제대로 실행됩니다. 또한 확인을 위해 이중 확인을 설정했으며 매개 변수가 잘 전달되었습니다. '[oracle @ dbsgoel1 gvenzl] $ ./wrapping_shell_script.sh tiger Mon 11 월 3 일 10:50:00 GMT 2014 empno 입력 : ENAME ---------- SCOTT' 와의 확인 : '[오라클 @ dbsgoel1 gvenzl] $ ./wrapping_shell_script.sh 호랑이 월 11월 3일 그리니치 표준시 10시 50분 27초 2014 empno 입력 : 이전 3 : WHERE TO_CHAR (e.empno) = '& abc' new 3 : WHERE TO_CHAR (e.empno) = '7788' ENAME ---------- SCOTT' – gvenzl
나는 확인을 설정하고 매개 변수가 성공적으로 전달되었는지 확인하는 것이 좋습니다. 아마도 당신이 그것을 수정할 수없는 경우 SQL 스크립트를 복사/붙여 넣기하여. – gvenzl