"PLS-00428: INTO 절이 Select 문에서 누락되었습니다."
비용이 많이 드는 조인을 활용하는 대신 rownum을 변수로 검색하려면, rownum은 환경에 따라 달라질 수 있고 내부에서 정적 문자열로 표시될 수 없으므로 SELECT 문을 사용해야 합니다. code.
안타깝게도 Toad 및 Oracle SQL Developer에서 이 쿼리를 실행하려고 하면 다음 오류가 발생합니다.
"PLS-00428: 이 SELECT 문에 INTO 절이 필요합니다."
이 오류는 PL/SQL 블록에서 변수가 select 문의 열에 명시적으로 할당되어야 한다는 사실에서 발생합니다. 이는 열 값을 직접 참조할 수 있는 SQL 문과 다릅니다.
제공된 코드의 문제는 INTO 절이 없는 두 번째 BEGIN 블록의 SQL 문에 있습니다. 이 누락으로 인해 오류가 발생합니다. 이를 수정하려면 다음과 같이 코드를 수정해야 합니다.
DECLARE PROD_ROW_ID VARCHAR (10) := NULL; VIS_ROW_ID NUMBER; DSC VARCHAR (512); BEGIN SELECT ROW_ID INTO VIS_ROW_ID FROM SIEBEL.S_PROD_INT WHERE PART_NUM = 'S0146404'; BEGIN SELECT RTRIM (VIS.SERIAL_NUM) || ',' || RTRIM (PLANID.DESC_TEXT) || ',' || CASE WHEN PLANID.HIGH = 'TEST123' THEN CASE WHEN TO_DATE (PROD.START_DATE) + 30 > SYSDATE THEN 'Y' ELSE 'N' END ELSE 'N' END || ',' || 'GB' || ',' || RTRIM (TO_CHAR (PROD.START_DATE, 'YYYY-MM-DD')) INTO DSC FROM SIEBEL.S_LST_OF_VAL PLANID INNER JOIN SIEBEL.S_PROD_INT PROD ON PROD.PART_NUM = PLANID.VAL INNER JOIN SIEBEL.S_ASSET NETFLIX ON PROD.PROD_ID = PROD.ROW_ID INNER JOIN SIEBEL.S_ASSET VIS ON VIS.PROM_INTEG_ID = PROD.PROM_INTEG_ID INNER JOIN SIEBEL.S_PROD_INT VISPROD ON VIS.PROD_ID = VISPROD.ROW_ID WHERE PLANID.TYPE = 'Test Plan' AND PLANID.ACTIVE_FLG = 'Y' AND VISPROD.PART_NUM = VIS_ROW_ID AND PROD.STATUS_CD = 'Active' AND VIS.SERIAL_NUM IS NOT NULL; END; END; /
INTO 절을 추가하면 이제 select 문의 열이 해당 변수에 할당되어 오류가 해결됩니다.
참조
위 내용은 내 PL/SQL 코드에서 'PLS-00428: INTO 절이 이 SELECT 문에서 누락되었습니다.' 오류가 발생하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!