我编写了一个存储过程,我希望将两个计数值添加到集合中,使用以下代码:
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的经验很少。
答案 0 :(得分:5)
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;
是一个可以接收多个变量的单个子句,而不是您附加到每个选择项的子句:
@Override
public float getPageWidth(int position) {
// TODO Auto-generated method stub
if (position == 0) {
return .8f;
}
return 1f;
}