2013-07-31 7 views
1

SQL 쿼리, 프로 시저 등의 데이터베이스가 있습니다.문자열 연결을위한 Oracle PLSQL 스크립트

이제 연결 연산자가있는 다음 SQL 문이 있습니다.

'INSERT INTO TEST_TABLE(ID, NAME)' || 'SELECT ID, NAME FROM ' || ' MY_TABLE' 

는 내가 다시 SQL을받을 때이 SQL 그냥 예를 들어 있지만, 기본적으로 내가 회씩 연결을 제거하고 간단한 SQL을 반환 할

INSERT INTO TEST_TABLE(ID, NAME) SELECT ID, NAME FROM MY_TABLE 

을 반환 할 것을 원한다.

감사

+0

그냥 SQL 주입 취약점에 대한 조심 결과! –

답변

3

내가 오라클 만드는 바로이 eval 같은 뭔가를 찾고 문제를 가지고있는 경우는 연결 부호 문자열을 평가한다.

해보십시오이

declare 
    concatenetaed_sql varchar2(32000); 
    result_Sql varchar2(32000); 
begin 
    concatenetaed_sql := '''INSERT INTO TEST_TABLE(ID, NAME)'' || ''SELECT ID, NAME FROM '' || '' MY_TABLE'''; 
    execute immediate 'select ' || concatenetaed_sql || ' from dual' 
    into result_sql; 
    dbms_output.put_line(result_sql); 
end; 

같은 그리고

INSERT INTO TEST_TABLE(ID, NAME)SELECT ID, NAME FROM MY_TABLE 

PL/SQL procedure successfully completed. 
+0

감사합니다. 그것은 나를 위해 일했습니다. – user2521079

관련 문제