Oracle中提取和存储数据库对象的DDL


作者:刀断水 | 来源:Examlink | 日期:08-24 | 字体: [ ]

本文简介:在很多情况下,数据库中数据的维护操作要求我们提取多种对象(例如数据库表、索引、约束、触发器等)的DDL(Data Definition Language,数据定义语言)。

         

  列表2:MetaDataPkg程序包规范

  用如下的方式建立或更新MetaDataPkg:

cEnabled constant char(7) := ’ENABLED’;
cDisabled constant char(8) := ’DISABLED’;
cUsable constant char(6) := ’USABLE’;
cUnusable constant char(8) := ’UNUSABLE’;
cValid constant char(5) := ’VALID’;
cInvalid constant char(7) := ’INVALID’;

cTable constant char(5) := ’TABLE’;
cView constant char(4) := ’VIEW’;
cIndex constant char(5) := ’INDEX’;
cConstraint constant char(10) := ’CONSTRAINT’;
cTrigger constant char(7) := ’TRIGGER’;
cLobType constant char(3) := ’LOB’;
cClobType constant char(4) := ’CLOB’;
cBlobType constant char(4) := ’BLOB’;
cPackage constant char(7) := ’PACKAGE’;
cPackageBody constant char(12) := ’PACKAGE BODY’;
cProcedure constant char(9) := ’PROCEDURE’;
cFunction constant char(8) := ’FUNCTION’;
cSequence constant char(8) := ’SEQUENCE’;
cSynonym constant char(7) := ’SYNONYM’;
cType constant char(4) := ’TYPE’;
cColumn constant char(6) := ’COLUMN’;
cJavaSource constant char(11) := ’Java SOURCE’;
cJavaClass constant char(10) := ’Java CLASS’;

cYes constant char(3) := ’YES’;
cNo constant char(2) := ’NO’;

cPKConsType constant char(1) := ’P’;
cUNConsType constant char(1) := ’U’;
cFKConsType constant char(1) := ’R’;
cCKConsType constant char(1) := ’C’;

cDropStorage constant char(12) := ’DROP STORAGE’;
cReuseStorage constant char(13) := ’REUSE STORAGE’;
cCascade constant char(19) := ’CASCADE CONSTRAINTS’;
cNoCascade constant char(10) := ’NO CASCADE’;
cEnable constant char(6) := ’ENABLE’;
cNovalidate constant char(10) := ’NOVALIDATE’;
cRely constant char(4) := ’RELY’;
cNoRely constant char(6) := ’NORELY’;
cValidated constant char(9) := ’VALIDATED’;
cNotValidated constant char(13) := ’NOT VALIDATED’;
cLogging constant char(7) := ’LOGGING’;
cNoLogging constant char(9) := ’NOLOGGING’;
cParallel constant char(8) := ’PARALLEL’;
cNoParallel constant char(10) := ’NOPARALLEL’;
cNull constant char(4) := ’NULL’;
cNotNull constant char(8) := ’NOT NULL’;
cDefault constant char(7) := ’DEFAULT’;

cSYSPrefix constant char(4) := ’SYS_’;
cDoubleQuote constant char(1) := ’"’;

subtype tString is varchar2(30);
subtype tDBString is varchar2(255);
subtype tDBLongString is varchar2(4000);
subtype tLongString is varchar2(32767);

type tArrayLongString is table of tLongString
index by pls_integer;

type tMetaObject is record
(
 aName tString,
 aType tString,
 aLogging tString,
 aParallel tString,
 aStatus tString,
 aValidated tString,
 aRely tString,
 aDDLString tLongString
);

type tArrayMetaObject is table of tMetaObject
index by pls_integer;

type tFullMetaObject is record
(
 aTable tMetaObject,
 aIndexes tArrayMetaObject,
 aConstraints tArrayMetaObject,
 aTriggers tArrayMetaObject
);

type tArrayFullMetaObjectByString is table of tFullMetaObject
index by varchar2(30);

procedure Load
(
 pTable in tString,
 pForce in boolean := false
);

procedure Reset
(
 pTable in tString
);

procedure Reset;

function GetMeta
(
 pTable in tString,
 pForce in boolean := false
)
return tFullMetaObject;

function GetMeta
return tArrayFullMetaObjectByString;

procedure SetMeta
(
 pTable in tString,
 pFullMetaObject in tFullMetaObject
);

procedure SetMeta
(
 pArrayFullMetaObjectByString in tArrayFullMetaObjectByString
);

procedure Show
(
 pTable in tString
);

procedure Show;
end MetaDataPkg;

 上面的类型对象是作为元数据存储器的,用于存放多个表的完整的元数据信息集合。所有上面的类型都包含在程序包规范中(列表2所示)。我还介绍了下面一些API:                        



用户名: 新注册) 密码: 匿名评论 [所有评论]

评论内容:(不能超过250字,需审核后才会公布,请自觉遵守互联网相关政策法规。
  • 2007年Oracle认证考试辅导 Oracle考试讲义 Oracle考试点评
如果你觉得一篇文章有用,你可以在每篇后面参与评论,或者查看其他人的评论,请保证你的评论对大家友好。
点这里评论
或者您可以来资源论坛参与讨论,一切都是免费的,不过可能需要麻烦您注册一下。
点这里讨论
把你的文章登陆在这里,让大家来分享你的文章。请立即登陆发表!
点这里投稿