2011-02-01 5 views
1

다음 방법을 사용하여 DOS 배치 스크립트에서 SQL을 실행합니다.DOS 배치 스크립트에서 Oracle sql을 실행하는 파이프 포함

모델이 제대로 작동하지만이 특정 코드가 작동하지 않습니다. 나는 || 문자 때문에 믿습니다. 내가 ^|^|를 사용하여 시도했지만이 작동하지 않았다.

아이디어가 있으십니까?

(
echo update mytable set file_path = 'C' || substr(file_path, 2); 
echo commit; 
echo exit 
) | sqlplus x/[email protected] 
+2

*이 특정 코드가 작동하지 않습니다 * 수 너 좀 더 구체적 일까? –

답변

1

저장 파일과 SQL 및 SQL 플러스의 입력 재 :

sqlplus x/[email protected] <sql.txt 
1

대신의 CONCAT을 사용할 수 있습니다 ||는 ||^|^|와 이스케이프 연산자는

+0

'concat'을 사용하면 문제가 해결되지 않습니다. 왜냐하면'||'이 아닌 닫는 paranthesis 때문입니다. –

+0

@ 르네, 네가 맞아 .. 그걸 .. 시도해 봤어. –

1

또 다른 문제를 잎 : cmd.exe를이 substr(file_path, 2);의 닫는 괄호가 첫 번째 줄에 여는 괄호에 속한다는 것을 생각한다. 따라서 SQL * Plus에 인쇄되지 않으므로 업데이트 구문을 update mytable set file_path = 'C' || substr(file_path, 2과 같은 것으로 렌더링합니다. 이는 명백히 오라클이 해석 할 수 없습니다.

당신은 당신이 따옴표로 전체 UPDATE 문을 넣을 경우이 문제를 해결하고과 같이, (또 다른) cmd.exe를이를 공급할 수 :

(
@echo select * from mytable; 
@cmd /c "echo update mytable set file_path = 'C' ^|^| substr (file_path, 2);" 
@echo commit; 
@echo exit 
) | sqlplus x/[email protected] 
관련 문제