Я хочу получить количество различных ASN_NO из моего запроса, чтобы позже проверить свою хранимую процедуру, если я найду более одного и выдам ошибку.
Вместо того, чтобы пытаться открыть курсор (что мне тоже не удалось сделать должным образом), я подумал, что, может быть, я мог бы сделать это с помощью выбора временной таблицы и сохранить значение, пока я заполняю курсор. Может быть, это невозможно, но моя ошибка не имеет для меня смысла.
Вот мой упрощенный код, я разбил оператор count, чтобы лучше определить, где именно была ошибка.
V_ASN_COUNT NUMBER;
OPEN O_CURSOR FOR
WITH O_LIST AS(
SELECT *
FROM AN_ORDER_INFO OI, AN_SHIPMENT_INFO SI
-- where bunch of stuff
),
COUNT_ASN_NO AS (
SELECT COUNT(DISTINCT ASN_NO) AS "ASN_COUNT"
FROM O_LIST
),
SAVE_ASN_COUNT AS (
SELECT ASN_COUNT
INTO V_ASN_COUNT
FROM COUNT_ASN_NO -- error on this line, not enough values, its just 1:1, i dont get it?
)
SELECT * FROM O_LIST;
IF(V_ASN_COUNT > 1) THEN
RAISE MULTIPLE_ASNS;
END IF;
Или, возможно, мне нужно открыть курсор после этого и сделать что-то подобное, за исключением того, что я знаю, что это неправильно, я получаю сообщение об ошибке «Ожидается BULK INTO»:
OPEN O_CURSOR;
LOOP
FETCH COUNT(DISTINCT ASN_NO) INTO V_ASN_COUNT;
EXIT WHEN ASN_NO%NOTFOUND;
END LOOP;
CLOSE O_CURSOR;