2014-12-11 2 views
0

DB : 오라클 11gR2SQL 스크립트에서 변수를 사용하는 방법은 무엇입니까?

OS : 리눅스

클라이언트 : SQLPLUS

우리가 아래

DOW=`date +%a` 
LOG= /home/output/$DOW 

같은 것을 할 수 있습니다 ksh 스크립트에서이 가능 같은 것입니다 $ DOW 변수는 SQL 스크립트에서 사용합니까?

기본적으로 SQL 스크립트와 스풀링 로그를 한 위치에 실행하고 있지만 위의 변경 사항으로 인해 실행되는 날짜에 DOW (요일) 디렉터리로 로그 위치를 변경하고 싶습니다.

e.g. spool /home/output/$DOW/test.log 

On tuesday script creates log under Tue directory /home/output/Tue/test.log 
+0

@a_horse_with_no_name 세부 정보를 추가했습니다 .. 감사합니다. – homer

+0

OS 스크립트 내에서'<< EOF' 구조체를 사용하면 모든 것이 가능합니다. 적어도, Bash에서는, 나는 단지 Ksh가 그것을 허용한다고 가정하고있다. 따라서 SQL 명령을 실행하는 OS 스크립트 만 작성하면됩니다. 그렇게하면 원하는 OS 변수를 사용할 수 있습니다. 그렇지 않으면 매개 변수로 OSPLUS 파일에 OS 변수를 전달해야합니다 : mysqlfile.sql $ DOW $ LOG $ PATH' – tvCa

답변

0
echo "I am a shell script" 
sqlplus user/[email protected] << EOF 
spool /home/output/$DOW/test.log 
select 9 from dual; 
spool off 
exit 
EOF 
  • SQLPLUS는 당신이 좋아하는 방법이 될 수 있습니다 연결; sqlplus user 또는 sqlplus/as sysdba 또는 ..
  • 마지막 EOF는
  • 그것은 작동 할 수 SPOOL OFF
  • 을 위해 동일 EXIT
  • 를 사용하지 않고 쉘 난이 있으리라 믿고있어
  • 배쉬 및 Korn 작동 왼쪽 화면의 경계에 배치해야
+0

, 귀하의 의견에 감사드립니다. 나는 정확하게 설명하지 않았거나 당신의 의견을 이해하지 못했다고 생각합니다. 나는 오직 하나의 sql 파일을 가지고 있으며, 어떤 ksh 나 bash 스크립트에 의해서도 실행되지 않았다. 확실히 다른 ksh 스크립트를 만들고 거기에서 sql을 호출하여 내 문제를 해결할 수 있습니다. 제 질문은 1. .sql 파일 내에서 $ DOW 변수를 생성하고 올바른 날짜 디렉토리 (예 : 월, 화)에 로그를 생성하는 것이 가능합니다. – homer

+1

아 OK. 그래서 당신은 SQL 파일 내부에서만 작업하고 있습니다. 이 경우 Linux/Unix에서'!'또는'host' 명령을 사용하여 OS 명령을 실행할 수 있습니다. 예 :'SQL> host echo $ PATH' 또는'SQL>! echo $ PATH' --- 아니면보다 완벽한 :'SQL>! echo PATH = $ PATH> temp.sql' 그리고 나서'start temp.sql'을 실행하고 변수 PATH가 정의됩니다 :'select '& PATH'from dual;이 표시됩니다 : old 1 : 이중에서 '& PATH'선택 new 1 : '/usr/lib64/qt-3.3/bi'를 선택하십시오. – tvCa

+0

에 대한 훌륭한 아이디어! 또는 호스트 명령, 나는 그것을 테스트하고 그것을 업데이 트됩니다. 감사. – homer