Я ищу способ вернуть один нечувствительный к регистру varchar2 из таблицы, заданной в качестве параметра. База данных сконфигурирована так, чтобы иметь в качестве первого столбца тот, который я рассмотрю. Это то, что я получил:Передайте имя таблицы функции
create or replace function generic_return(nam varchar2, table_n varchar2)
return varchar2
as
case_insensitive varchar2(300);
case_ins varchar2(300);
colu varchar2(30);
t_nam varchar2(30):=upper(table_n);
cursor point is execute inmediate select colu from t_nam;
cursor col is select column_name from cols where table_name=t_nam;
non_existent_table exception;
begin
case_ins:=upper(rtrim(ltrim(nam)));
open col;
fetch col into colu;
close col;
select column_name from cols where table_name=upper(table_n);
if colu is null then
raise non_existent_table;
end if;
open point;
loop
fetch point into case_insensitive;
exit when point%notfound;
if upper(case_insensitive)=case_ins then
return case_insensitive;
end if;
end loop;
close point;
return null;
end;
/
Функция получает то, что нужно искать, и имя таблицы, чтобы посмотреть в, то первые переменные, чтобы сравнить их, t_nam является использование в верхнем регистре версии второй параметр ... и из-за этого есть огромный беспорядок: я получаю имя столбца из таблицы в col, из cols, а затем я пытаюсь сделать курсор, который идет вокруг проверки того, что кортеж, идущий по тем же самым изменениям , является первым параметром, или нет, если это произойдет, тогда он должен вернуть неизмененную версию той, что находится в таблице. В противном случае он должен возвращать значение «null», которое я буду обрабатывать по-разному в каждой процедуре, которая его использует. Путем null я имею в виду ничего, а не строку.
Ваш вопрос широко неопровержимый. Вам нужно отредактировать его, чтобы объяснить, что вы хотите, если вы ожидаете от нас помощи. Всегда рекомендуется размещать некоторые выборочные данные и желаемый результат. – APC