> 데이터 베이스 > MySQL 튜토리얼 > 내 PL/SQL 코드에서 'PLS-00428: INTO 절이 이 SELECT 문에서 누락되었습니다.' 오류가 발생하는 이유는 무엇입니까?

내 PL/SQL 코드에서 'PLS-00428: INTO 절이 이 SELECT 문에서 누락되었습니다.' 오류가 발생하는 이유는 무엇입니까?

DDD
풀어 주다: 2025-01-01 06:42:10
원래의
899명이 탐색했습니다.

Why am I getting the

"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 문의 열이 해당 변수에 할당되어 오류가 해결됩니다.

참조

  • [INTO에 대한 Oracle 설명서 절](http://docs.oracle.com/cd/E11882_01/appdev.112/e25519/static.htm#LNPLS00601)
  • [SELECT INTO에 대한 Oracle 설명서 성명](http://docs.oracle.com/cd/B19306_01/appdev.102/b14261/selectinto_statement.htm#CJAJAAIG)
  • [PLS-00428에 대한 ORA-Code 문서](http:// pls-00428.ora-code.com/)

위 내용은 내 PL/SQL 코드에서 'PLS-00428: INTO 절이 이 SELECT 문에서 누락되었습니다.' 오류가 발생하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿