是否可以在PL SQL中将varray of strings作为常量使用?例如,我在PL SQL中创建了一个CRUD矩阵构建器,它适用于这种代码:
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'的情况下为单个块创建。 做一个
的varray commands := ( '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 :(得分: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;
不确定 - 这就是你需要的吗?