私は、1つの大文字と小文字を区別しないvarchar2をパラメータとして与えられたテーブルから返す方法を探しています。 データベースは、最初の列として調べるように構成されています。 これは私が得たものである:t_namはの大文字バージョンを使用することで、最初の変数は、それらを比較するためにある、関数が探すために何を受信して、テーブルの名前がに見て関数にテーブル名を渡す
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;
/
2番目のパラメータ...とそこから巨大な混乱がある:私はテーブルのcolから列名を取得し、colsから、そして私はカーソルを作ることを試みるかどうかを確認するタプルは、同じ変更最初のパラメータかどうか、それが起こった場合は、テーブルの未修正バージョンを返す必要があります。それ以外の場合は、nullを返す必要があります。これは、それを使用する各プロシージャで扱う処理が異なります。 null私は無駄を意味し、文字列は意味しません。
ご質問は広くunanswerableです:
次に、あなたのような何かを試みることができます。私たちがあなたのお手伝いをしたいと思ったら、あなたが望むものを説明するためにそれを編集する必要があります。いくつかのサンプルデータと望ましい出力を投稿することは、常に良い考えです。 – APC