나는 Bash에 루프를 가지고있다. 그것은 오늘날까지 매력처럼 작동하고 있었다. 같은 루프는 같습니다SQLPlus에서 세션을 활성 상태로 유지하고 동일한 세션에 다시 연결할 수 있습니까? BASH-related
SOMEPACKAGE.SOMEFUNCTION(some,'parameters',here,'sometimes',NULL,'or',numbers)
지금 - 패키지가 그것으로 무엇을해야하고 있던 때까지
while read line1 ; do
while read line2 ; do
stringArray=($line2)
string=$line1.${stringArray[1]}
sqlplus /nolog <<EOF
connect sysuser/[email protected]_instance
alter system flush shared_pool;
quit
EOF
sqlplus -s /nolog > /dev/null 2>&1 <<EOF
connect user/[email protected]_instance
variable rc refcursor;
SPOOL ${line1}_${stringArray[0]}.DATA
exec :rc := $string;
print rc;
spool off
exit
EOF
done < file2.txt
done < file1.txt
한 가지를 명확히하기 위해, 변수 $string
의 내용은 기능 및 매개 변수와 오라클 패키지는 단지 하나의 매개 변수가있는 실행 - 모든 것이 완벽하게 좋았습니다. 하지만 이제는 5 단계로 작업을 수행하는 패키지를 만났습니다. 마지막 단계에서 결정된 단계가 있습니다. 최종의 1,
SOMEPACKAGE.SOMEFUNCTION(some,'parameters',here,'sometimes',NULL,'or',1)
SOMEPACKAGE.SOMEFUNCTION(some,'parameters',here,'sometimes',NULL,'or',2)
SOMEPACKAGE.SOMEFUNCTION(some,'parameters',here,'sometimes',NULL,'or',3)
SOMEPACKAGE.SOMEFUNCTION(some,'parameters',here,'sometimes',NULL,'or',4)
SOMEPACKAGE.SOMEFUNCTION(some,'parameters',here,'sometimes',NULL,'or',5)
첫번째을 다른 작업 (2 내지 5)가 작동되는 TEMPORARY_TABLE
에서 제조된다 : 이것은 다음과 같다. 작업 번호 5는 전체 체인의 결과도 제공해야합니다.
작업을 1 단계로 수행 할 때까지는이 루프를 실행하는 것이 완벽했습니다. 그러나 TEMPORARY_TABLE
은 연결을 끊은 후에 사라지기 때문에,이 패키지의 bash 스크립트에 특별한 섹션을 추가 할 수는 없으므로 훨씬 많은 패키지가있을 수 있고 단계 수가 다릅니다. 이 스크립트를 사용하는 사용자의 노력없이 자동으로 수행해야합니다.
세션을 유지하는 방법이 있습니까? 아니면 다른 방법이 있습니까?
코 프로세스에서'sqlplus'를 실행하십시오. – Barmar
각 실행에 대해 새 임시 테이블을 만드는 것이 Oracle에서 임시 테이블을 사용하는 올바른 방법이 아닙니다. Oracle에서 임시 테이블은 다른 데이터베이스보다 영구적입니다. 예 : http://stackoverflow.com/q/2671518/272735 임시 란 테이블의 수명이 아니라 행의 수명을 의미합니다. – user272735
정말 다른 SQL 세션이 필요한 경우 임시 테이블로 사용되는 일반 테이블을 만들지 않겠습니까? 나중에 수동으로 삭제해야하지만 다른 세션의 사용에는 문제가 없습니다. 테이블의 이름이 매우 구체적임을 반드시 확인해야합니다. – tvCa