これはあなたが求めていることではないことを認識していますが、これを動的クエリとして実行することによって何を意味するのかを知っている人々を指摘しました。
プロシージャを作成してフィールド名を保持するだけです。命名標準が同じであると仮定すると、入力値は週#(1,2,7,27,123など)になり、フィールド名は直接対応します(Week1、Week2、Week7、Week27、Week123、などそして、あなただけのような何かと思い、それを呼び出す)
create or replace procedure myweek(week_in varchar2)
is
dyn_sql varchar2(1000);
begin
dyn_sql := 'select * from table_name where week'||week_in||' = ''something;'' '
execute immediate dyn_sql;
end;
/
:
exec myweek(27); and it would generate the sql:
select * from table_name where week27 = 'something';
を使用すると、データベースを変更することはできますか?適切に正規化されたデータベースモデルがあれば、これは必要ではありません。 –
@a_horse_with_no_name **は正しいです**。 2年後にデータベースが稼動しているとどうなりますか?あなたは104列あります。 3年 - 156列。それは本当に、本当に悪いデザインです。リモートでも可能な場合は、これを正規化する必要があります。 –