Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 尝试选择进入时缺少关键字_Sql_Oracle_Function_Keyword_Scalar - Fatal编程技术网

Sql 尝试选择进入时缺少关键字

Sql 尝试选择进入时缺少关键字,sql,oracle,function,keyword,scalar,Sql,Oracle,Function,Keyword,Scalar,所以我有一个函数来返回一列的平均值,比如 CREATE OR REPLACE FUNCTION avgCol RETURN DEC IS avgNum DEC; BEGIN SELECT AVG(myCol) INTO avgNum FROM MyTable; RETURN avgNum; END; / 在尝试测试结果时,我有以下几点 SELECT avgCol INTO RESULT FROM DUAL; 但它给了我一个错误 ORA-00905: missing keywo

所以我有一个函数来返回一列的平均值,比如

CREATE OR REPLACE FUNCTION avgCol
RETURN DEC IS avgNum DEC;
BEGIN
  SELECT AVG(myCol)
  INTO avgNum
  FROM MyTable;
  RETURN avgNum;
END;
/
在尝试测试结果时,我有以下几点

SELECT avgCol
INTO RESULT
FROM DUAL;
但它给了我一个错误

ORA-00905: missing keyword
00905. 00000 -  "missing keyword"
*Cause:    
*Action:
Error at Line: 175 Column: 6
其中第175行是
到结果中的
。据我所知,这是一个标量函数,我试图返回一个信号变量,所以它应该正常工作?我遗漏了什么关键词?
我也知道我可以使用AVG(),但我正在学习如何创建标量函数。这完全是为了学习。

在测试代码(应该可以)时,您需要

SELECT avgCol AS result FROM DUAL;

“INTO”将结果值分配给PL/SQL变量;'AS'为SQL选择(不是PL/SQL)结果列/字段创建别名/名称

什么是
avgCol
?它似乎没有在任何地方定义。函数定义中的
aveNum
是什么?这就是您要求函数返回的内容。@GordonLinoff,它是一个标量函数,用于返回一个表中数字的平均值column@mathguy对不起,那是个打字错误。我修改了代码,把它贴在这里。这是命中注定的avgNum@a_horse_with_no_name,根据文档,它是一个子类型,谢谢!我查了一下,我查到的每一个地方都写着“进入”。你知道为什么我应该用As而不是Into吗?