2011-11-14 6 views
0

여기 내 PL/SQL입니다.다중 SQL 문으로 즉시 실행

execute immediate ' 
create table Alex_Test2(col1 varchar2(100)); 
/
drop table Alex_Test2; 
/
'; 

동적 SQL에서는 테이블이 만들어지고 즉시 삭제됩니다. 재미있는 점은 테이블이 성공적으로 생성되고 삭제되었지만 오류가 있다는 것입니다.

Error starting at line 1 in command: 
execute immediate ' 
Error report: 
ORA-06550: line 1, column 17: 
PLS-00103: Encountered the symbol "; END;" when expecting one of the following: 

    := . (@ % ; 
06550. 00000 - "line %s, column %s:\n%s" 
*Cause: Usually a PL/SQL compilation error. 
*Action: 
table ALEX_TEST2 created. 
table ALEX_TEST2 dropped. 

Error starting at line 6 in command: 
' 
Error report: 
Unknown Command 

실제로 사용자가 입력 한 SQL 문입니다. ;/과 같은 기호는 피할 수 없습니다. 이 문제를 어떻게 해결할 수 있습니까? 또는이 오류를 어떻게 무시할 수 있습니까?

그러나 로그를 유지해야합니다. 통나무가 단지

table ALEX_TEST2 created. 
table ALEX_TEST2 dropped. 

감사합니다!

답변

2

실행하기 전에 쿼리 문자열을 조작 할 수 없습니까? 그런 능력이 없다면 무엇을 할 수 있습니까?

실행하기 전에 쿼리 문자열에서 찾기 및 바꾸기 만하면됩니다.

+0

동적 SQL은 사용자가 입력하므로 변경할 수 없습니다. 나는 다른 모든 것을 통제 할 수있다. "찾기 및 바꾸기"에 필요한 것은 무엇입니까? –

+0

자, 이제 막 입력하지 못하도록 막을 수는 없지만 실행하기 전에 입력을 조작 할 수는 있습니다. SQL Server에서 replace 함수를 사용합니다. http://msdn.microsoft.com/en-us/library/ms186862.aspx. dbms에서 동일 할 수도 있지만, Google 검색을 수행하는 것만으로는 안되며, 다시 한 번 물어 보면 답을 얻는 것보다 더 빨리 찾을 수있을 것입니다. –