程式包呼叫報ORA-06508: PL/SQL: 無法找到正在呼叫的程式單元
開發人員修改一個包裡一個過程,修改成功,並重新編譯成功,在程式日誌發現呼叫這個包報錯ORA-06508: PL/SQL: 無法找到正在呼叫的程式單元
先如下驗證:
開啟資料庫的一個會話建立一個包如下:
CREATE OR REPLACE PACKAGE SimplePkg AS
v_GlobalVar1 NUMBER := 1;
PROCEDURE UpdateVar;
END SimplePkg;
/
CREATE OR REPLACE PACKAGE BODY SimplePkg AS
PROCEDURE UpdateVar IS
vv number;
xx number;
BEGIN
v_GlobalVar1 := 7;
END UpdateVar;
END SimplePkg;
/
第一個會話:
[email protected]>CREATE OR REPLACE PACKAGE SimplePkg AS
2 v_GlobalVar NUMBER := 1;
3 PROCEDURE UpdateVar;
4 END SimplePkg;
5 /
Package created.
[email protected]>CREATE OR REPLACE PACKAGE BODY SimplePkg AS
2 PROCEDURE UpdateVar IS
3 BEGIN
4 v_GlobalVar := 7;
5 END UpdateVar;
6 END SimplePkg;
7 /
Package body created.
然後在開啟第二個會話呼叫這個包:
BEGIN
simplePkg.UpdateVar;
END;
第二個會話:
[email protected]>BEGIN
2 simplePkg.UpdateVar;
3 END;
4 /
PL/SQL procedure successfully completed.
然後在第一個會話中修改包
CREATE OR REPLACE PACKAGE BODY SimplePkg AS
PROCEDURE UpdateVar IS
vv number;
xx number;
BEGIN
v_GlobalVar1 := 7;
END UpdateVar;
END SimplePkg;
/
第一個會話:
[email protected]>CREATE OR REPLACE PACKAGE BODY SimplePkg AS
2 PROCEDURE UpdateVar IS
3 vv number;
4 xx number;
5 BEGIN
6 v_GlobalVar1 := 7;
7 END UpdateVar;
8 END SimplePkg;
9 /
Package body created.
[email protected]>
第二個會話再次呼叫,報錯ORA-06508: PL/SQL: could not find program unit being called: "PROD.SIMPLEPKG"
第二個會話:
[email protected]>BEGIN
2 simplePkg.UpdateVar;
3 END;
4 /
BEGIN
*
ERROR at line 1:
ORA-04068: existing state of packages has been discarded
ORA-04061: existing state of package body "PROD.SIMPLEPKG" has been invalidated
ORA-04065: not executed, altered or dropped package body "PROD.SIMPLEPKG"
ORA-06508: PL/SQL: could not find program unit being called: "PROD.SIMPLEPKG"
ORA-06512: at line 2
在一次執行條用,條用正常
[email protected]>BEGIN
2 simplePkg.UpdateVar;
3 END;
4 /
PL/SQL procedure successfully completed.
[email protected]>
出現這種情況的原因是因為,對於全域性變數,每一個session會生成一個本地copy,如果程式重新編譯的話,就會因程式裡原變數找不到而丟棄該變數,繼而導致這個錯誤。
也就是說在一個會話中呼叫程式包package時,會生成package中全域性變數的副本,如果在另一個會話中對此package進行編譯就會使前一個會話中的副本失效,故而產生錯誤。
要想避免這個錯誤,可以使程式捕獲ORA-06508:的錯誤進行處理,也可以重新初始化會話
相關推薦
程式包呼叫報ORA-06508: PL/SQL: 無法找到正在呼叫的程式單元
開發人員修改一個包裡一個過程,修改成功,並重新編譯成功,在程式日誌發現呼叫這個包報錯ORA-06508: PL/SQL: 無法找到正在呼叫的程式單元 先如下驗證: 開啟資料庫的一個會話建立一個包如下: CREATE OR REPLACE PACKAGE Si
Oracle Web ADI 載入時錯誤:ORA-06508: PL/SQL: 無法在呼叫之前找到程式單元
Oracle EBS 的Web ADI給批量匯入資料提供一個不錯的解決方案。但是,Web ADI開發比較麻,主要缺點如: 1.整合器設定好以後不能修改,必須要事先考慮包的儲存過程或函式的引數。則否,儲存過程和函式修改要新增引數時,必須要重新定整合器,不能修改和刪除。 2.對
除錯經驗——ORA-06502: PL/SQL: numeric or value error: character string buffer too small的解決方法
問題描述: 生產環境中,有一個在報表自動刷新系統中排期的報表(scheduled report)生成失敗。 報以下錯誤: ORA-06502: PL/SQL: numeric or value error: character string buffer too small ORA-
ORA-06502: PL/SQL: 數字或值錯誤 : 字串緩衝區太小 錯誤分析
1. 問題起因 最近在進行oracle的一些操作時,總會遇到這個錯誤: ORA-06502: PL/SQL: 數字或值錯誤 : 字串緩衝區太小,錯誤如下: ORA-00604: 遞迴 SQL 級別 1 出現錯誤 ORA-0650
ORA-06502:PL/SQL :numberic or value error: character string buffer too small
原文地址為: ORA-06502:PL/SQL :numberic or value error: character string buffer too small 今天遇到一個錯誤提示:ORA-06502:PL/SQL :numberic or value error: charac
ORACLE 儲存過程的建立以及ORA-06502:PL/SQL:數字或值錯誤的解決方法
建立四個儲存過程,分別是簡單不帶引數的儲存過程、帶兩個輸入引數IN的儲存過程、帶一個輸入引數IN,一個輸出引數OUT的儲存過程和帶兩個輸入輸出引數IN OUT的儲存過程。 建立一張全域性臨時emp表 CREATE GLOBAL TEMPORARY TAB
ORA-06502: PL/SQL: 數字或值錯誤 : 字元到數值的轉換錯誤 問題解決
今天在plsql中執行儲存過程的時候發現,日誌記錄中有“SQLCODE(-6502) SQLERRM(ORA-06502: PL/SQL: 數字或值錯誤 : 字元到數值的轉換錯誤)”這個錯誤出現。後來
pl/sql developer中用execute呼叫儲存過程彈出‘無效的sql語句’解決方法
--------建立儲存過程------- create or replace procedure GetUserAccout as tatle number(10); begin
在PL/SQL中建立、呼叫儲存過程--oracle
在oracle10中寫好了儲存過程,程式碼如下:CREATE OR REPLACE Procedure Proc_Insert ( sName in varchar2, sAge in int, sE
Oracle Client11g下載安裝以及本地服務名配置ORA針對PL/SQL設定小結
問題 安裝 Oracle\Win32_11G_R2_Client 客戶端時,檢查顯示出現 “失敗”,點選 忽略 繼續; network Configuration Assistant不能開啟,則使用CMD輸入 “netca”進行開啟; 若是由於沒有許可權
Win7下面PL/SQL無法使用
今天發現在使用PL/SQL時,無法登陸。經過群裡朋友的幫忙,最後圓滿解決,現留個記錄以便以後可查。 1、右鍵PL/SQL的執行圖示,然後選擇以管理員身份執行 , 2、登入時以正常的 普通使用者身份
Error:程式包android.support.v4.app不存在;Error:找不到類FragmentActivity
最近把在eclipse中開發的android專案匯入到AS中,出現了一點小錯誤。用的是以非gradle方式將 Eclipse 專案匯入Android Studio,具體方法參考http://blog.c
關於PL\SQL無法在64位Client下使用的原因及解決辦法
初次使用oracle時會使用到PLSQL圖形化工具,可是如果此時你安裝的是64位的資料庫,則安裝完PL\SQL後使用它是會出現一個錯誤對話方塊,提示圖如下: 點選下載 instantclien
pl/sql無法連線oracle的解決過程心得
剛裝好的oracle,pl/sql之前都好好的突然一天,pl/sql登入連線oracle失敗了。提示ora-01034:ORACLE NOT AVAI LABLE ora-27101:shared memory realm does not exist 然後試著在cmd中
PL/SQL Developer登入時候報ORA-12638: 身份證明檢索失敗的解決辦法
net ces 默認 安裝目錄 多個 sem con 操作系統 p s 本地oracle客戶端用PLSQL Developer連接遠程數據庫,登入時候報ORA-12638: 身份證明檢索失敗的解決辦法 找到安裝目錄:C:\oracle\BIToolsHome_1\netwo
PL/SQL報錯:ORA-28000:the account is locked
第一種方法(圖形操作):第一步:使用PL/SQL,登入名為system,選擇型別的時候把Normal修改為SYSDBA;第二步:選擇users下的system,右擊點選“編輯”; 第三步:修改密碼,把“帳戶被鎖住”的勾去掉; 第四步:點選最下面的“應用”再點選“關閉”; 第五步:重新登入就可以通過驗證了
[PL/SQL] 關於pl/sql編譯報ORA-00934此處不允許使用分組函式 [複製連結]
今天在開發的過程中碰到一個奇怪的現象:pl/sql編譯報ORA-00934此處不允許使用分組函式,但單獨執行該語句是可以成功執行的,並且業務邏輯也是正確的 舉個例子 1、建立兩張表 create table ABC (
安裝兩次ORACLE客戶端,PL-SQL登入報錯 ORA-12154
安裝兩次ORACLE客戶端,PL-SQL登入報錯 ORA-12154: TNS:could not resolve the connect identifier specified 原因:環境變數 path 配置 D:\oracle\product\10.2.0\clie
使用PL/SQL Developer 報錯:ORA-01460 :轉換請求無法實現或不合理 解決辦法!!!
剛安裝好的oracle9i,使用pl/sql developer連線上去操作表的時候就報錯:ORA-01460 :轉換請求無法實現或不合理 。 問題原因是:客戶端和服務端字符集不一致。 事後回想一下,產生問題的原因應該是,事前裝過oracle10g,沒有解除安裝乾淨,後面又裝oracle9i設定的字符集和or
使用PL/SQL Developer 報錯:ORA-01460 :轉換請求無法實現或不合理 解決辦法!!!...
剛安裝好的oracle9i,使用pl/sql developer連線上去操作表的時候就報錯:ORA-01460 :轉換請求無法實現或不合理 。問題原因是:客戶端和服務端字符集不一致。事後回想一下,產生問題的原因應該是,事前裝過oracle10g,沒有解除安裝乾淨,後面又裝or