国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發(fā) > 綜合 > 正文

用DBMS_DDL包重新編譯PL/SQL對(duì)象

2024-07-21 02:34:32
字體:
供稿:網(wǎng)友

  ALTER_COMPILE過程
   這個(gè)過程等價(jià)于如下語句
   ALTER PROCEDUREFUNCTIONPACKAGE [.] COMPILE [BODY]
  語法
   DBMS_DDL.ALTER_COMPILE (
   type  VARCHAR2,
  schema VARCHAR2,
   name  VARCHAR2);
  參數(shù):
  
用DBMS_DDL包重新編譯PL/SQL對(duì)象

  現(xiàn)在,假如想重編譯一個(gè)程序,Oracle首先會(huì)重編譯被標(biāo)識(shí)invalid的程序所依靠的所有對(duì)象.
  
  例1:
  編譯MYUSER方案的access_RIGHTS過程:
  DBMS_DDL.ALTER_COMPILE('PROCEDURE','MYUSER','ACCESS_RIGHTS');
  
  例2:
  差不多每個(gè)實(shí)例中,PL/SQL對(duì)象名稱以大寫方式存儲(chǔ),假如創(chuàng)建時(shí)指定一個(gè)雙引號(hào)的對(duì)象名稱,那么當(dāng)編譯時(shí)應(yīng)指定同樣的方式.
  
  假如指定不正確,則會(huì)報(bào)以下的錯(cuò)誤
  SQL> dbms_ddl.alter_compile('PROCEDURE','MYUSER','access_rights');
  BEGIN dbms_ddl.alter_compile('PROCEDURE','MYUSER','access_rights'); END;
  *
  ERROR at line 1:
  ORA-20000: Unable to compile PROCEDURE "MYUSER"."access_rights",
  insufficient privileges or does not exist
  ORA-06512: at "SYS.DBMS_DDL", line 68
  ORA-06512: at line 1
  
  因此假如你創(chuàng)建如下的對(duì)象:
  CREATE or REPLACE PROCEDURE "My_Object" IS
  BEGIN
  ...
  得使用:
  DBMS_DDL.ALTER_COMPILE('PROCEDURE','MYUSER','My_Object');
  
  也可以使用ALTER PROCEDURE COMPILE命令來編譯對(duì)象,用DBMS_DDL包最大的優(yōu)勢(shì)在于可以在以后的程序或PL/SQL中編譯,這將擁有完全的靈活性以創(chuàng)建強(qiáng)有力的使用價(jià)值(請(qǐng)參照如下例子)
  
  例3:
  這個(gè)例子將獲得所有無效的對(duì)象并且重新編譯
  
   set termout on
   set serverout on
   DECLARE
   cursor cur_invalid_objects is
   select object_name, object_type from user_objects where status='INVALID';
   rec_columns cur_invalid_objects%ROWTYPE;
   err_status NUMERIC;
   BEGIN
   dbms_output.enable(10000);
   open cur_invalid_objects;
   loop
   fetch cur_invalid_objects into rec_columns;
   EXIT WHEN cur_invalid_objects%NOTFOUND;
  
   dbms_output.put_line
  ('Recompiling ' rec_columns.object_type ' ' rec_columns.object_name);
   dbms_ddl.alter_compile(rec_columns.object_type,NULL,rec_columns.object_name);
   end loop;
   close cur_invalid_objects;
   EXCEPTION
   When others then
   begin
   err_status := SQLCODE;
   dbms_output.put_line(' Recompilation failed : ' SQLERRM(err_status));
  
   if ( cur_invalid_objects%ISOPEN) then
  CLOSE cur_invalid_objects;
   end if;
  
   exception when others then
   null;
   end;
   end;
   /
  
  總結(jié):
  ALTER_COMPILE可以代替手工而自動(dòng)編譯對(duì)象,查找那些無效的對(duì)象從而一個(gè)一個(gè)地編譯.

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 桑日县| 仁布县| 什邡市| 息烽县| 丘北县| 读书| 南雄市| 新源县| 饶河县| 仙桃市| 米脂县| 徐汇区| 泰兴市| 双辽市| 密云县| 犍为县| 济南市| 卢龙县| 黎城县| 平南县| 南宁市| 台东县| 南靖县| 百色市| 高州市| 千阳县| 邯郸县| 乌鲁木齐县| 安国市| 通化县| 任丘市| 宝清县| 改则县| 竹溪县| 太谷县| 龙江县| 兰考县| 彭山县| 长岛县| 沛县| 新化县|