"PLS-00428: INTO-Klausel fehlt in der Select-Anweisung"
Um eine Rownum als Variable abzurufen, anstatt einen kostspieligen Join zu verwenden, Es muss eine SELECT-Anweisung verwendet werden, da die Zeilennummer je nach Umgebung variieren kann und nicht als statische Zeichenfolge innerhalb dargestellt werden kann Code.
Leider führt der Versuch, diese Abfrage in Toad und Oracle SQL Developer auszuführen, zu folgendem Fehler:
"PLS-00428: In dieser SELECT-Anweisung wird eine INTO-Klausel erwartet"
Dieser Fehler ist auf die Tatsache zurückzuführen, dass in PL/SQL-Blöcken Variablen in SELECT-Anweisungen explizit Spalten zugewiesen werden müssen. Dies unterscheidet sich von SQL-Anweisungen, bei denen auf Spaltenwerte direkt verwiesen werden kann.
Das Problem im bereitgestellten Code liegt in der SQL-Anweisung des zweiten BEGIN-Blocks, der eine INTO-Klausel fehlt. Dieses Versäumnis löst den Fehler aus. Um dies zu beheben, muss der Code wie folgt geändert werden:
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; /
Durch das Hinzufügen der INTO-Klausel werden nun die Spalten in der Select-Anweisung den entsprechenden Variablen zugewiesen, wodurch der Fehler behoben wird.
Referenzen
Das obige ist der detaillierte Inhalt vonWarum erhalte ich in meinem PL/SQL-Code die Fehlermeldung „PLS-00428: In dieser SELECT-Anweisung fehlt eine INTO-Klausel'?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!