游标中的Listagg在oracle 11g中

时间:2016-03-09 16:23:30

标签: oracle11g cursor listagg

我试图创建一个在其select语句中使用LISTAGG的游标fetch_table_info。

create or replace PROCEDURE testcheck is 
cursor fetch_table_info is       
select LISTAGG(B.COLUMN_NAME,'||'',''||')       
WITHIN GROUP (ORDER BY B.COLUMN_POSITION)       
from USER_IND_COLUMNS B       
where  B.TABLE_NAME=B.INDEX_NAME and b.TABLE_NAME='TEST_TAB'; 
begin 
dbms_output.put_line(SQLERRM); 
end; 
/

select语句单独执行,但编译过程会产生以下错误

找到'LISTAGG',只有CUME_DIST,DENSE_RANK,PERCENT_RANK,RANK,PERCENTILE_CONT和PERCENTILE_DISC对WITHIN GROUP有效

提前多多感谢!

1 个答案:

答案 0 :(得分:1)

看起来您使用的是旧版本的Toad,它无法识别Oracle 11gR2中引入的listagg函数。

From the Dell support site

  

描述
  语法检查程序无法识别11gR2新分析函数LISTAGG。

     

...

     

上面的代码运行正常但如果我们尝试格式化它,则会出现以下错误消息:

     

ERROR第4行,第10列,ending_line 4,ending_col 16,找到listagg,只有CUME_DIST,DENSE_RANK,PERCENT_RANK,RANK,PERCENTILE_CONT和PERCENTILE_DISC对WITHIN GROUP有效

     

原因
  10.1版中的解析器不支持此11gR2函数

     

分辨率
   Toad for Oracle 11.0及更高版本支持此功能。您可以使用http://bit.ly/noHL20

下载最新版本的Toad

...这有趣地指向一个旧的Quest URL,它只是重定向到Dell支持登录页面。看起来你可以get the current version here