Как бы вы создали функцию в Oracle, которая имеет таблицу в качестве входного параметра и возвращает строку? Вот моя попытка, но возвращает ошибку:Oracle с таблицей в качестве входного параметра
create or replace type temp_table as object (col_name varchar(100));
/
create or replace type col_table as TABLE of temp_table;
/
create or replace FUNCTION COLUMN_HEADERS
(col_name in col_table)
RETURN VARCHAR2
is
return_string VARCHAR2(4096);
BEGIN
return_string := '';
for i in 1 .. col_name.count loop
return_string := return_string || ' ''' || col_name(i) || ''' as ' || regexp_replace(col_name(i), '[ \+]', '_');
if i < col_name.count then
return_string := return_string || ',';
end if;
end loop;
RETURN return_string;
END;
я получаю следующее:
Error(9,9): PL/SQL: Statement ignored
Error(9,26): PLS-00306: wrong number or types of arguments in call to '||'
который указывает на этой линии:
return_string := return_string || ' ''' || col_name(i) || ''' as ' || regexp_replace(col_name(i), '[ \+]', '_');
Я думаю, что col_name (я) не возвращает строку, но с использованием VALUE()
или TO_CHAR()
дает мне другие ошибки. Кто-нибудь знает, как отладить это?
Спасибо! Думаю, я впутался в номенклатуру. – user2506680