Oracle Apex で積み上げ縦棒 3D フラッシュ チャートを作成しています。これは、SQL クエリを返す PL/SQL に基づいています。PL/sql は、すべてのタイプのプロパティを取得し、それらのプロパティに接続されたデータベース内のインスタンス数をカウントするために必要です。コードは次のとおりです。
DECLARE
l_qry VARCHAR2(32767);
v_id NUMBER;
v_resort VARCHAR2(80);
BEGIN
l_qry := 'SELECT ''fp=&APP_ID.:802::app_session::::P5_SEARCH_MONTH:''||TO_CHAR(E.ENQUIRED_DATE,''MON-YY'')||'':'' link,';
l_qry := l_qry || ''' ''||TO_CHAR(E.ENQUIRED_DATE,''MON-YY'')||'':'' label,';
--Loop through the resorts and add a sum(decode...) column with column alias
FOR r1 IN (SELECT DISTINCT a.resort_id FROM enquiry a, resort b where a.resort_id IS NOT NULL and a.resort_id = b.id and b.active =1)
LOOP
select name into v_resort
from resort
where id = r1.resort_id;
PLSQLはすべてのリゾートを巡回し、それらを数えています。このソリューションはある程度機能しますが、値が返された後、v_resort から取得したリゾート名のラベルを付けたいと考えています。そこが一番の難所です
l_qry := l_qry || 'sum(decode(resort_id,''' || r1.resort_id ||''',1,0)) test,';
l_qry := l_qry || 'sum(decode(resort_id,''' || r1.resort_id ||''',1,0)) '|| v_resort||',';
列にカーソルを合わせると、最初の行に「test」ラベルが表示されます。ただし、「||」を使用した2番目のもの v_resort ||' 結果が表示されないという問題が発生します... #no_data_found# メッセージは表示されませんが、空白のフィールドのみが表示されます..コードの残りの部分:
END LOOP;
--Trim off trailing comma
l_qry := rtrim(l_qry, ',');
--Append the rest of the query
l_qry := l_qry || ' from ENQUIRY E,resort r
where
e.enquiry_type=''AVAILR''
and e.enquiry_channel like '''||:P5_CHANNEL||'''
and trunc(e.created) >= '''||:P5_DATE_FROM||'''
and trunc(e.created) <= '''||:P5_DATE_TO||'''
and e.ENQUIRED_DATE > '''||:P5_DATE_FROM||'''
and ((NVL(:P5_AVAILABLE,''A'')=''A'') or ('''||:P5_AVAILABLE||'''=AVAILABLE))
and e.resort_id = r.id
and ((resort_id = '''||:P6_RESORT||''') or ('''||:P6_RESORT||''' like ''0''))
group by To_Char(ENQUIRED_DATE,''MON-YY''),TO_CHAR(ENQUIRED_DATE,''YYMM'')
Order By TO_CHAR(ENQUIRED_DATE,''YYMM'')';
return(l_qry);
END;
疲れた'|| v_resort ||' , '''||v_resort||''' . リゾート名を保持する v_resort から取得するラベルの値を作成する方法はありますか?