Maison >base de données >tutoriel mysql >Pourquoi est-ce que j'obtiens l'erreur « PLS-00428 : une clause INTO est manquante dans cette instruction SELECT » dans mon code PL/SQL ?
"PLS-00428 : Clause INTO manquante dans l'instruction Select"
Pour récupérer un numéro de ligne en tant que variable plutôt que d'utiliser une jointure coûteuse, une instruction SELECT doit être utilisée, car le numéro de ligne peut varier en fonction de l'environnement et ne peut pas être représenté comme une chaîne statique dans le code.
Malheureusement, tenter d'exécuter cette requête dans Toad et Oracle SQL Developer génère l'erreur suivante :
"PLS-00428 : une clause INTO est attendue dans cette instruction SELECT"
Cette erreur vient du fait que dans les blocs PL/SQL, les variables doivent être explicitement affectées aux colonnes dans les instructions select. Cela diffère des instructions SQL, où les valeurs de colonne peuvent être directement référencées.
Le problème dans le code fourni réside dans l'instruction SQL du deuxième bloc BEGIN, qui ne contient pas de clause INTO. Cette omission déclenche l'erreur. Pour remédier à cela, le code doit être modifié comme suit :
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; /
En ajoutant la clause INTO, les colonnes de l'instruction select sont désormais affectées aux variables appropriées, résolvant l'erreur.
Références
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!