我试图创建一个在其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有效
提前多多感谢!
答案 0 :(得分:1)
看起来您使用的是旧版本的Toad,它无法识别Oracle 11gR2中引入的listagg
函数。
描述
语法检查程序无法识别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
Toad for Oracle 11.0及更高版本支持此功能。您可以使用http://bit.ly/noHL20
...这有趣地指向一个旧的Quest URL,它只是重定向到Dell支持登录页面。看起来你可以get the current version here。