Oracle ORA-22905关于将计数(*)设置为输出参数

Oracle ORA-22905关于将计数(*)设置为输出参数,oracle,stored-procedures,oracle-sqldeveloper,Oracle,Stored Procedures,Oracle Sqldeveloper,我创建了一个示例oracle函数来返回表中的记录数。给你 create or replace FUNCTION TEST_COUNT RETURN NUMBER AS recCount NUMBER; BEGIN SELECT COUNT(*) INTO recCount FROM **tableName**; return recCount; END TEST_COUNT; 它已成功编译,但当我在Oracle SQL Developer中使用命令调用此函数时 SELECT * FR

我创建了一个示例oracle函数来返回表中的记录数。给你

create or replace FUNCTION TEST_COUNT
RETURN NUMBER AS recCount NUMBER;
BEGIN
  SELECT COUNT(*) INTO recCount  FROM **tableName**;
  return recCount;
END TEST_COUNT;
它已成功编译,但当我在Oracle SQL Developer中使用命令调用此函数时

SELECT * FROM TABLE (TEST_COUNT());
这让我犯了以下错误

ORA-22905: cannot access rows from a non-nested table item
22905. 00000 -  "cannot access rows from a non-nested table item"
*Cause:    attempt to access rows of an item whose type is not known at
           parse time or that is not of a nested table type
*Action:   use CAST to cast the item to a nested table type
Error at Line: 1 Column: 22

我已经遵循了,但无法找到解决方案。请建议我该怎么办?

好吧,你只是说我错了。当函数返回一个集合(例如,从
创建类型x作为数字表
)时使用,您希望将该集合视为一个表,以便可以对其进行连接,但这里的情况并非如此;您正在返回一个简单的
编号

所以,只要做:

SELECT TEST_COUNT FROM DUAL;

你确定这是来自那个密码吗?看起来不错,除非
**tableName**
有点奇怪。同一个脚本中还有什么,因为它不长19行?函数根本没有创建;或者它是用编译错误创建的;或者它已成功创建,您调用它时出错?如果是在调用时,你是如何做到的?@AlexPoole,函数是正确的,没有给出任何编译错误。用数据库中表的名称替换tableName。那么,什么时候会出现错误?如何调用它?剧本的第19行是什么?