oracle編譯package
Ⅰ oracle裡面的包(package) 有什麼用啊
簡單說,就是將oracle里的一部分procere等object 組織起來,完全是為了方便代碼程序的管理,完全不使用package也是可以的,只是那樣的話,代碼多了不易管理
Ⅱ oracle如何批量編譯包體
sql">alterpackageusername.xxxxcompilebody;
語法如上
Ⅲ oracle package(包)是什麼有什麼用處
package就是用來封裝過程,函數用的。
一個package可以存放多個過程,函數。
調用是:
包名.過程名1
包名.過程名2
樓上解釋很形象~
Ⅳ ORACLE 過程編譯錯誤,高手來解答!
憑感覺,你的語法沒錯。今天連不起公司伺服器。周一連上給你試試,等著。。
我們創建的時候,用的是create or replace package。我將你包的內容改變了(因為我沒有創建你的那個數據表emp),運行成功了的。內容如下:
create or replace package xxemp_pkg is
procere update_sal(name varchar2,newsal number);
function annual_income(name varchar2) return number;
end;
/
create or replace package body xxemp_pkg is
procere update_sal(name varchar2,newsal number)
is
begin
/*update emp set sal=newsal
where lower(ename)=lower(name);*/null;
end;
function annual_income(name varchar2) return number
is
annual_salary number(7,2);
begin
/*select sal*12+nvl(comm,0) into annual_salary
from emp where lower(ename)=lower(name);*/null;
return annual_salary;
end;
end;
/
你再到你的系統試一試。
Ⅳ oracle 編譯包的時候,一直提示正在編譯
編譯的存儲過程的時候,程序死住,等待一會出現ora-04021錯誤解決辦法:
1.可能被鎖住
查看v$lockedselect b.sid,b.serial#,b.machine,b.terminal,b.program,b.process,b.status from v$lock a , v$session b
where a.SID = b.SID
得到死鎖session的SID,SERIAL#參看這個是否為你自己用戶下的,然後kill掉session
2.可能被掛起
查看v$session_waitselect b.serial#,a.* from v$session_wait a,v$session
bwhere a.sid = b.sid得到等待的session的sid和serial#3.查看dba_ddl_locksselect
session_id sid, owner, name, type,
mode_held held, mode_requested request
from dba_ddl_locks
where name = '&your_package_name'
Ⅵ oracle 如何執行package
exec package.function(xx,xx...);
如果想執行整個,在包中編寫一個調研所有函數或存儲的主存儲,然後你調研主存儲就可以了。
oracle提供包功能本身不具備調研所有函數或存儲的功能,只是將函數、存儲、變數以包的形式管理。
Ⅶ oracle 創建存儲過程報錯, PACKAGE BODY SCOTT.EMP_SAL_MANAGEMENT 編譯錯誤
子程序或游標 'P_P_BONUS' 已在程序包說明中聲明, 必須在程序包體中對其進行定義。意思是你已經聲明了這個存儲過程P_P_BONUS,但是沒有在包體(PACKAGE BODY )中定義,就是你還需要在包體中定義P_P_Bonus的實現部分
Ⅷ 如何重編譯ORACLE資料庫的無效對象
如果無效對象的數量很少,那麼你可以逐個編譯這些對象.
ALTER PACKAGE my_package COMPILE;
ALTER PACKAGE my_package COMPILE BODY;
ALTER PROCEDURE my_procere COMPILE;
ALTER FUNCTION my_function COMPILE;
ALTER TRIGGER my_trigger COMPILE;
ALTER VIEW my_view COMPILE;
Ⅸ Oracle中的package 怎麼用
先create package,在裡面聲明procere
然後再create package body,在package body裡面編寫procere的代碼即可(相當於create procere)。
包里沒有create procere
示例如下:
CREATE OR REPLACE PACKAGE pkg_test IS
PROCEDURE pro_test(V_OLD IN VARCHAR2,V_NEW IN VARCHAR2);
...
END test;
/
CREATE OR REPLACE PACKAGE BODY pkg_test IS
...
PROCEDURE pro_test(V_OLD IN VARCHAR2,V_NEW IN VARCHAR2) IS
BEGIN
...
END;
...
END pkg_test;