0

以下のコードを使用して、2 つのカウント値をコレクションに追加することを期待していたストアド プロシージャを作成しました。

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: ここではグループ機能は許可されていません

2 番目の行を削除するとCOUNT、ストアド プロシージャは正常にコンパイルされますが、この 2 行目を追加するとエラーが発生します。

なぜこれが起こっているのか説明できる人はいますか?Oracle に関する私の経験は最小限であることに注意してください。

4

1 に答える 1

5

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;
于 2015-07-02T07:32:18.477 に答える