我想从我的查询中获取不同 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;