두 개 이상의 오류가 발견되면 나중에 내 저장 프로 시저를 체크하기 위해 별개의 ASN_NO 수를 내 쿼리에서 가져오고 싶습니다.오라클에서 변수로 선택, 오류 ORA-00947 값이 충분하지 않습니다.
커서를 열려고 시도하는 대신 (제대로하지 못하고있는) 커서를 열려고 시도하는 대신 커서를 채우는 동안 임시 테이블을 선택하여 값을 저장하는 것으로 생각할 수 있습니다. 어쩌면 이것은 가능하지 않지만 내 오류는 내게 의미가 없습니다.
여기 내 단순화 된 코드입니다. 정확한 오류 위치를 확인하기 위해 카운트 성명서를 작성했습니다.
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;
아니면이 잘못 알고 제외하고 아마 난, 나중에 커서를 열고이 같은 것을 할 필요가, 내가 오류 "INTO BULK 기대"얻을 :
OPEN O_CURSOR;
LOOP
FETCH COUNT(DISTINCT ASN_NO) INTO V_ASN_COUNT;
EXIT WHEN ASN_NO%NOTFOUND;
END LOOP;
CLOSE O_CURSOR;
감사합니다. Alex, 저장 프로 시저에서 커서를 반환합니다. "o_list"는 여러 공급 업체가 동일한 ASN 번호를 보내는 경우에 실행되지 않으면 어떤 결과를 반환합니까? 그 쿼리를 두 번 수행해야합니다. 한 번 계산하려면 한 번, 내 목록을 얻으려면 한 번 수행해야합니다. 따라서 커서를 여는 것이 더 효율적이지만 구문에 문제가 있거나 적절한 리소스 예제를 찾는 것처럼 들립니다. – SomeRandomDeveloper
더 효율적인 것은 아니지만 코드 중복 및 유지 관리가 줄어들고 하나의 쿼리가 변경되고 다른 쿼리가 누락 될 위험이 줄어 듭니다. –
그게 바로 내가 생각하고 있었던거야. 내 현재 커서가 stumblings을 열어 내 질문을 업데이 트했습니다. 지금 당면 진짜 문제 인 것 같습니다. 아마 나는이 질문의 제목을보다 적절하게 바꾸어야한다. – SomeRandomDeveloper