SQL oracle DB에 저장된 별칭을 설명하는 KSH 스크립트 오류

SQL oracle DB에 저장된 별칭을 설명하는 KSH 스크립트 오류

테이블에 별칭으로 파일 경로를 저장했습니다(테이블의 필드에 비해 전체 경로가 너무 길기 때문입니다). 그러나 내 KSH 스크립트에서는 다음을 수행합니다.

nomtmp=`sqlplus -S bla/bla <<ENDOFSQL
 select myPath
   ||'/'
   || 'myFileName'
   || '.xml'   
from myTable;
 exit
ENDOFSQL`

(myPath에는 $fic이 포함되어 있습니다) $fic는 별칭으로 해석되지 않으므로 스크립트는 별칭으로 해석되지 않는 "$fic" 디렉터리에서 파일을 찾습니다.

테이블의 내용을 수정할 수 없습니다. 별칭처럼 처리해야 한다는 것을 어떻게 알 수 있나요?

매우 감사합니다.

답변1

귀하의 SQL 쿼리는 nomtmp에 할당될 때 쉘 변수의 값으로 확장하려는 하위 문자열 $ifc를 반환하는 것으로 보입니다.

이 경우 쉘 eval 내장 명령을 포함하여 여러 가지 방법을 사용하여 이를 수행할 수 있습니다. 이 시도:

nomtmp=$(eval echo "$(sqlplus -S bla/bla <<ENDOFSQL
 select myPath
   ||'/'
   || 'myFileName'
   || '.xml'   
from myTable;
 exit
ENDOFSQL)")

알아채다

$( ... )

동일합니까?

` ... `

그러나 전자는 중첩될 수 있으므로 더 바람직합니다. 또한 ${ifc}데이터베이스에서 이를 대신 사용 하여 $ifc앞뒤에 공백이 없는 실제 하위 문자열로 사용할 수 있습니다.

관련 정보