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