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

Oracle ORA-00934:此处不允许使用组功能,oracle,plsql,oracle11g,select-into,Oracle,Plsql,Oracle11g,Select 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) INTO value_1 , CO

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

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方面的经验很少。

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;

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;

太好了,谢谢!我会在几分钟内接受你的回答。很好。非常好,谢谢!我会在几分钟内接受你的回答。很好。你能评论一下你为什么否决这个问题吗?你能评论一下你为什么否决这个问题吗?