2011-01-06 75 views
0

我想在数据库仪表板报告软件(Logi Info)中创建图表。我有一个PL SQL包,返回一个具有多个值的引用游标,但它似乎Logi信息不支持这一点,并给我一个错误ORA-00904: "DASHBOARD_PACKAGE"."GETSUMMARYDATA": invalid identifier。我认为它或者不被支持,或者说我的错误是错误的。这是我的查询:不支持返回的游标光标

选择dashboard_package.getSummaryData(1,SYSDATE)从双

那是如何调用返回多个值的函数吗?如果是这样,是否有解决这个问题(返回类型不支持)?

+2

你能发布“DASHBOARD_PACKAGE”包规格吗?“GETSUMMARYDATA”? – Harrison 2011-01-06 13:53:12

回答

0

如果您使用SQL * Plus,则需要使用特殊语法才能访问REF CURSORS。
http://download.oracle.com/docs/cd/B19306_01/server.102/b14357/ch5.htm#sthref1127

因此,这将是这样的,你的情况:

这在SQL * Plus的手册是很好的解释

 
VARIABLE cv REFCURSOR 
EXECUTE dashboard_package.getSummaryData(1, sysdate, :cv) 
print cv 

注意,:cv变量的位置取决于你的程序的定义。
但是当你没有表现出我们的源代码

编辑
覆盖所有possibilies(如由APC提及): 如果函数确实返回REF游标,那么语法稍有不同的,因为在手动的下一章说明:
http://download.oracle.com/docs/cd/B19306_01/server.102/b14357/ch5.htm#sthref1128

 
VARIABLE cv REFCURSOR 
execute :cv := dashboard_package.getSummaryData(1, sysdate); 
print cv 
+0

OP表示他们已经定义了一个返回引用游标的函数,并且他们的发布的SQL调用似乎证实了这一点。 SQL * Plus支持SELECT语句中的引用游标,而不需要变量 - 至少在更新的版本中。看到我对他们的其他问题的回应:http://stackoverflow.com/questions/4614475/how-to-call-a-function-in-a-package/4615302#4615302 – APC 2011-01-06 14:16:49

0

这是编译错误。你的GETSUMMARYDATA()函数引用了一个无效的对象名,表,列或其他东西。如果你使用动态SQL,你将不会在运行时得到这个编译错误。

所以,你需要通过你的函数的源代码,并找到错误的东西。随错误消息一起提供的行号在这里可以帮到你。