[size=x-small;]由于公司的服务器上有不少老员工写的存储过程和包等,我想copy下来学习,但是将这些包一个个的放在硬盘中总不是一件很爽的事情,所以我就想是不是可以使用ORACLE的一个表来管理,下面就开始了我下午的学习之路,当然其中得感谢公司同事小强强告诉了我一个得到对象定义代码的函数DBMS_METADATE.GET_DDL().下面将表的结构,存储过程贴出来吧![/size]
表结构:
-- Create table create table SCRIPT_TO_LEARN ( SOURCE VARCHAR2(20), SCRIPT_NAME VARCHAR2(30), SCRIPT_VALUE CLOB ) tablespace USERS pctfree 10 initrans 1 maxtrans 255 storage ( initial 64K minextents 1 maxextents unlimited );
获取一个用户中所有包脚本的存储过程:
CREATE OR REPLACE PROCEDURE PROC_GET_PACKAGE_SCRIPT IS PACKAGE_NAME VARCHAR2(30); CURSOR CUR_PACKAGE_NAME IS SELECT OBJECT_NAME FROM USER_OBJECTS WHERE OBJECT_TYPE = 'PACKAGE BODY'; BEGIN OPEN CUR_PACKAGE_NAME; LOOP FETCH CUR_PACKAGE_NAME INTO PACKAGE_NAME; EXIT WHEN CUR_PACKAGE_NAME%NOTFOUND; INSERT INTO SCRIPT_TO_LEARN VALUES ('SOURCE',PACKAGE_NAME, DBMS_METADATA.GET_DDL('PACKAGE', PACKAGE_NAME)); COMMIT; END LOOP; CLOSE CUR_PACKAGE_NAME; END PROC_GET_PACKAGE_SCRIPT;