ホームページ > データベース > mysql チュートリアル > PL/SQL コードで「PLS-00428: この SELECT 文に INTO 句がありません」エラーが発生するのはなぜですか?

PL/SQL コードで「PLS-00428: この SELECT 文に INTO 句がありません」エラーが発生するのはなぜですか?

DDD
リリース: 2025-01-01 06:42:10
オリジナル
899 人が閲覧しました

Why am I getting the

"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 ステートメントの列が適切な変数に割り当てられ、エラーが解決されます。

参考資料

  • [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 コードのドキュメント](http:// pls-00428.ora-code.com/)

以上がPL/SQL コードで「PLS-00428: この SELECT 文に INTO 句がありません」エラーが発生するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート