2013-10-11 2 views
0

PL SQL에서 문자열의 VARRAY를 상수로 사용할 수 있습니까? 예를 들어 PL SQL에 CRUD 행렬 빌더를 작성 했으므로 다음과 같은 코드를 사용하면 문제가 없습니다.PL SQL에서 상수로 VARRAY 사용

 v_check := INSTR2(v_string_fnc, 'DROP '); 
string_to_parse := v_string_fnc; 

    WHILE v_check > 0 LOOP 
      v_check := INSTR2(string_to_parse, 'DROP '); 
          IF v_check > 0 THEN 
          v_check := INSTR2(string_to_parse, 'TABLE ', v_check) + 6; 
          result_table := SUBSTR(string_to_parse, v_check); 
          string_to_parse := result_table; 
          result_table := RTRIM(SUBSTR(result_table, 0, INSTR(result_table, ' '))); 
          table_indx := result_table; 
          tab_res(table_indx).table_ := result_table; 
          tab_res(table_indx).delete_ := 'D'; 
          end if; 
          end loop; 

그리고 다른 모든 명령은 이와 유사합니다. 이제 모든 작업에 대해 별도의 블록 대신이 명령을 'DROP TABLE', 'INSERT INTO', 'DELETE FROM'과 같이 사용할 때 단일 블록을 만드는 대신이 작업을 수행하는 방법이 궁금합니다.

For i in 1..commands.length() loop 
    v_check := instr2(string_to_parse, commands(i)); 
    v_check := INSTR2(string_to_parse, ' ', v_check) + 2; 
    result_table := SUBSTR(string_to_parse, v_check); 
    string_to_parse := result_table; 
    result_table := RTRIM(SUBSTR(result_table, 
           0, 
           INSTR(result_table, ' '))); 
    table_indx := result_table; 
    tab_res(table_indx).table_ := result_table; 

답변

0

이 시도 : - 이것은 당신이 필요한 것입니다

DECLARE 
    TYPE my_varray_t IS VARRAY(10) OF VARCHAR2(100); 
    v_my_varray my_varray_t := 
    my_varray_t('DROP TABLE ', 'INSERT INTO ', 'DELETE FROM'); 
BEGIN 
    FOR v_i IN 1..v_my_varray.COUNT 
    LOOP 
    dbms_output.put_line(v_my_varray(v_i)); 
    END LOOP; 
END; 

확실하지 이 같은 뭔가

 commands := ('DROP TABLE ', 'INSERT INTO ', 'DELETE FROM '); 

의 그리고 후 VARRAY를 확인?