国产探花免费观看_亚洲丰满少妇自慰呻吟_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ā)表
主站蜘蛛池模板: 兰溪市| 石嘴山市| 班玛县| 慈溪市| 侯马市| 桓仁| 德阳市| 宜阳县| 德昌县| 新龙县| 塘沽区| 讷河市| 象山县| 克山县| 乌什县| 五指山市| 兰溪市| 胶南市| 江山市| 大荔县| 柘城县| 连州市| 红桥区| 龙江县| 余姚市| 扬州市| 四会市| 洪雅县| 通江县| 达拉特旗| 泰安市| 济南市| 富顺县| 延川县| 翁牛特旗| 贡觉县| 昆明市| 东丽区| 东阳市| 房产| 保山市|