首頁 > 資料庫 > mysql教程 > 為什麼我的 PL/SQL 程式碼中會出現「PLS-00428:此 SELECT 語句中缺少 INTO 子句」錯誤?

為什麼我的 PL/SQL 程式碼中會出現「PLS-00428:此 SELECT 語句中缺少 INTO 子句」錯誤?

DDD
發布: 2025-01-01 06:42:10
原創
933 人瀏覽過

Why am I getting the

「PLS-00428:Select 語句中缺少INTO 子句」

要檢索rownum 作為變數而不是使用昂貴的聯接,必須檢索使用SELECT 語句,因為rownum 可能會根據環境而變化,並且不能表示為內部的靜態字串程式碼。

不幸的是,嘗試在Toad 和Oracle SQL Developer 中執行此查詢會產生以下錯誤:

「PLS-00428:此SELECT 語句中需要INTO 子句」

此錯誤源自於以下事實:在PL/SQL 區塊中,必須將變數明確指派給select 語句中的欄位。這與可以直接引用列值的 SQL 語句不同。

所提供程式碼中的問題在於第二個 BEGIN 區塊的 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;
/
登入後複製

透過新增 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中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板