現在、これは私がこの関数を使用している方法です:
TYPE strings IS TABLE OF VARCHAR(255) INDEX BY BINARY_INTEGER;
str_columns strings;
function parse ( prc_string in varchar,
prc_delim in varchar ) return strings as
str_record varchar(32767) := '';
str_field varchar(255) := '';
int_length integer := 0;
int_sub integer := 0;
int_count integer := 0;
str_fields strings;
begin
str_record := trim(prc_string) || prc_delim;
int_length := length(str_record);
if int_length = 0 then
int_count := -1;
return str_fields;
end if;
loop
int_sub := int_sub + 1;
exit when int_sub > int_length;
if substr(str_record,int_sub,1) <> prc_delim then
str_field := str_field || substr(str_record,int_sub,1);
else
int_count := int_count + 1;
str_fields(int_count) := str_field;
str_field := '';
end if;
end loop;
return str_fields;
end;
str_columns := parse_function(inp_buffer, ',');
これを関数にして、多くのプロシージャから呼び出すことができる必要があります。コンマ区切りでテキストを解析します。SQL Navigator で Collection Type と Function を使用しようとしましたが、エラー式が間違った型であるというエラーが表示されました。
基本的に、このプロシージャはテキスト ファイルを開いて解析します。