ORA-00934: 此处不允许使用组功能

Posted

技术标签:

【中文标题】ORA-00934: 此处不允许使用组功能【英文标题】:ORA-00934: group function is not allowed here 【发布时间】:2015-07-02 07:27:47 【问题描述】:

我编写了一个存储过程,希望将两个计数值添加到集合中,代码如下:

PROCEDURE generate(code_in in VARCHAR2
                 , value_1 out NUMBER
                 , value_2 out NUMBER) is
BEGIN
    SELECT 
        COUNT(CASE WHEN type = 'A' THEN 1 ELSE NULL END) INTO value_1
        , COUNT(CASE WHEN type IN ('B','D') THEN 1 ELSE NULL END) INTO value_2
    FROM table
    WHERE code = code_in;
END generate;

但是在运行代码时出现以下错误:

ORA-00934:此处不允许使用群组功能

如果我删除第二个COUNT,存储过程编译得很好,但是当我添加第二行时,我得到了错误。

谁能帮忙解释一下为什么会这样?请注意,我在 Oracle 方面的经验很少。

【问题讨论】:

你能评论一下你为什么不赞成这个问题吗? 【参考方案1】:

into 是一个可以接收多个变量的子句,而不是您附加到每个选择项的子句:

PROCEDURE generate(code_in in VARCHAR2
                 , value_1 out NUMBER
                 , value_2 out NUMBER) is
BEGIN
    SELECT 
        COUNT(CASE WHEN type = 'A' THEN 1 ELSE NULL END),
        COUNT(CASE WHEN type IN ('B','D') THEN 1 ELSE NULL END)
    INTO value_1, value_2 -- into clause with both variables
    FROM table
    WHERE code = code_in;
END generate;

【讨论】:

太好了,谢谢!将在几分钟内接受您的回答。 好一个。有用

以上是关于ORA-00934: 此处不允许使用组功能的主要内容,如果未能解决你的问题,请参考以下文章

此处不允许使用群组功能

Java 8 javadoc doclint 功能“此处不允许标记”

where语句中不能直接使用聚合函数

数据类型-元组

此处不允许使用相对虚拟路径 ''

Azure AD B2C 是不是允许组层次结构?