"PLS-00428: Select ステートメントに INTO 句がありません"
コストのかかる結合を利用するのではなく、rownum を変数として取得するには、 rownum は環境によって異なる可能性があり、行番号内で静的文字列として表すことができないため、SELECT ステートメントを使用する必要があります。 code.
残念ながら、Toad および Oracle SQL Developer でこのクエリを実行しようとすると、次のエラーが発生します:
「PLS-00428: この SELECT ステートメントには INTO 句が必要です」
このエラーは、PL/SQL ブロックでは、変数が select ステートメントの列に明示的に割り当てられる必要があるという事実に起因します。これは、列値を直接参照できる SQL ステートメントとは異なります。
提供されたコードの問題は、INTO 句が欠如している 2 番目の 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: この SELECT 文に INTO 句がありません」エラーが発生するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。