首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 相關知識

Oracle 預存程序入門:從報錯到成功的完整實踐記錄

     編輯:Java 相關知識

記錄一次在 Oracle 9i 環境下創建預存程序的完整試錯過程,展示常見錯誤(PLS-00428、PLS-00201)的成因與修正,最終實現帶輸出的計數查詢程序。

環境資訊

Oracle 9i Enterprise Edition Release 9.2.0.1.0
JServer Release 9.2.0.1.0

試錯過程關鍵節點

錯誤 1:SELECT 缺少 INTO 子句

SQL> create or replace procedure get_news as
  2  begin
  3    select * from cf_news;
  4  end;
  5  /
警告: 創建的過程帶有編譯錯誤。
SQL> show errors;
LINE/COL ERROR
4/1      PLS-00428: 在此 SELECT 語句中缺少 INTO 子句

原因:PL/SQL 中 SELECT 必須將結果存入變數,不能直接輸出。

錯誤 2:拼寫錯誤 DBMS_OUTPUB

SQL> create or replace procedure get_news as
  2    aa number;
  3  begin
  4    select count(*) into aa from cf_news;
  5    dbms_outpub.put_line('aa='||aa);
  6  end;
  7  /
警告: 創建的過程帶有編譯錯誤。
SQL> show errors;
LINE/COL ERROR
6/1      PLS-00201: 必須說明標識符 'DBMS_OUTPUB.PUT_LINE'

修正:正確包裝名為 DBMS_OUTPUT。

最終成功版本

SQL> create or replace procedure get_news as
  2    aa number;
  3  begin
  4    select count(*) into aa from cf_news;
  5    dbms_output.put_line('aa=' || aa);
  6  end;
  7  /
過程已創建。

SQL> set serveroutput on;
SQL> execute get_news;
aa=3
PL/SQL 過程已成功完成。

核心知識點總結

錯誤代碼含義解決方案
PLS-00428SELECT 缺少 INTO宣告變數,使用 SELECT ... INTO var FROM ...
PLS-00201標識符未聲明檢查拼寫,確認權限與包名正確
  • SET SERVEROUTPUT ON 必須在客戶端開啟,否則 DBMS_OUTPUT 不顯示。
  • 預存程序參數模式:IN(預設)、OUT、IN OUT。
  • 良好習慣:先用 SHOW ERRORS 定位行號,再針對性修正。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved