0

我正在 Oracle Apex 中构建堆积柱状 3d Flash 图表。它基于 PL/SQL 返回 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||',';

当您将鼠标悬停在列上时,第一行将显示“测试”标签。但是第二个带有 '|| 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 获取的标签值吗?

4

1 回答 1

0

尝试 "'||v_resort||'"
您必须使用带引号的标识符,因为 v_resort 可以是任何字符串,并且对于不带引号的名称有很多规则

于 2013-08-16T01:44:55.097 回答