【发布时间】:2016-11-24 18:02:58
【问题描述】:
所以我有一个函数来返回一个列的平均值,例如
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 行是INTO RESULT。据我所知,这是一个标量函数,我正在尝试返回一个信号变量,所以它应该可以正常工作吗?我在这里缺少什么关键字?
我也知道我可以只使用 AVG(),但我正在学习如何创建一个标量函数。这仅用于学习目的。
【问题讨论】:
-
什么是
avgCol?它似乎没有在任何地方定义。 -
函数定义中的
aveNum是什么?这就是您要求函数返回的内容。 -
@GordonLinoff,它是一个标量函数,返回列中数字的平均值
-
@mathguy,抱歉打错了。我将代码更改为在这里发布。它的意思是avgNum
-
@a_horse_with_no_name,根据文档,它是一个子类型docs.oracle.com/database/121/LNPLS/predefined.htm#LNPLS2163
标签: sql oracle function keyword scalar