[SQL] PLS-00428 : INTO 절은이 SELECT 문에 기대된다
SQLPLS-00428 : INTO 절은이 SELECT 문에 기대된다
나는 변수로 오히려 사용이 비싼 가입보다 ROWNUM을 저장하고자하고있다. 나는 그것이 코드에서 리터럴 문자열이 될 수 있도록 ROWNUM은 다양한 환경에 따라 달라질 수 것 같은 Select 문에서이를 얻을 필요가있다.
상황의 경우,이 쿼리는 오라클 시벨 CRM 스키마에서 실행하고 특정 유형 및 특성의 일부 제품을 검색합니다.
나는 그러나 나는 다음과 같은 오류가 발생하고, 두꺼비와 Oracle SQL Developer에서 다음 SQL 코드를 사용하여 시도 :
여기에 코드입니다
DECLARE
PROD_ROW_ID varchar(10) := NULL;
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'))
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;
/
해결법
-
==============================
1.PLSQL 블록에서 선택 문 열은 SQL 문에서의 경우와하지 않은 변수에 할당해야합니다.
PLSQL 블록에서 선택 문 열은 SQL 문에서의 경우와하지 않은 변수에 할당해야합니다.
에 두 번째로의 SQL 문은 오류가 발생한 것을 INTO 절을 가지고하지 않습니다 시작합니다.
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; /
참조
http://docs.oracle.com/cd/E11882_01/appdev.112/e25519/static.htm#LNPLS00601 http://docs.oracle.com/cd/B19306_01/appdev.102/b14261/selectinto_statement.htm#CJAJAAIG http://pls-00428.ora-code.com/
from https://stackoverflow.com/questions/25486543/pls-00428-an-into-clause-is-expected-in-this-select-statement by cc-by-sa and MIT license
'SQL' 카테고리의 다른 글
[SQL] SQL Server의 UNIX_TIMESTAMP (0) | 2020.05.25 |
---|---|
[SQL] 어떻게 SQL에서 문을위한 SqlParameter에로 목록 <문자열>을 번역 하는가? [복제] (0) | 2020.05.25 |
[SQL] 크로스 조합 (하지 순열)는 SQL에 참여 (0) | 2020.05.25 |
[SQL] MySQL은 INSERT와 UPDATE 사이의 차이점은 무엇입니까? (0) | 2020.05.25 |
[SQL] MySQL의의 LOAD DATA LOCAL INFILE을 사용하여 CSV의 수입시에 MySQL의 날짜 형식 문자열로 날짜를 변경하는 방법 (0) | 2020.05.25 |