条件
- SP が存在している必要があります
- 10g では有効でしたが、11g では有効ではありませんでした
次のエラーが発生したかどうかを証明する手順を実行できます。
- ORA-00979 でループが失敗しました: 式によるグループではありません (11 g)
11g では問題あり、10g では問題ありません
CREATE TABLE testing (AAA NUMBER, BBB NUMBER);
DECLARE
CURSOR curTesting(myGroupID IN NUMBER) IS
SELECT DECODE(myGroupID, AAA, 'PP', 'PP_GROUP') AS p_type,
COUNT(DISTINCT BBB) AS num_of
FROM testing
GROUP BY DECODE(myGroupID, AAA, 'PP', 'PP_GROUP')
ORDER BY p_type DESC;
BEGIN
FOR row IN curTesting(0) LOOP
NULL;
END LOOP;
END;
insert into testing values(1,2);
insert into testing values(1,2);
DECLARE
CURSOR curTesting(myGroupID IN NUMBER) IS
SELECT DECODE(myGroupID, AAA, 'PP', 'PP_GROUP') AS p_type,
COUNT(DISTINCT BBB) AS num_of
FROM testing
GROUP BY DECODE(myGroupID, AAA, 'PP', 'PP_GROUP')
ORDER BY p_type DESC;
BEGIN
FOR row IN curTesting(0) LOOP
NULL;
END LOOP;
END;
ERROR at line 1:
ORA-979: not a GROUP BY expression
ORA-6512: at line 3
ORA-6512: at line 10
- ORA-918 列が曖昧に定義されています
11g では問題あり、10g では問題ありません
select ps_id, product_scores.ps_id ps_id1, productId
from product_scores join (select ps_id productId from products_shop ) on
productId = ps_ps_id
where rownum < 10;
解決:
select t1.ps_id, t1.ps_id ps_id1, productId
from product_scores t1
join (select ps_id productId from products_shop)
on productId = ps_ps_id
where rownum < 10;
10g から 11g へのアップグレードによる無効な SP を確認するには、クエリを作成してください