谁知道informix里的对象语法结构存何处?
----主要是触发器的源代码?
------最佳解决方案--------------------------------------------------------
select * from systrigbody;
------其他解决方案--------------------------------------------------------
获得数据库对象的方法探讨(2)
角色
存储角色的表/视图有:
DBA_ROLES
描述数据库中所有角色。
取得角色方法:
SELECT ROLE FROM SYS.DBA_ROLES;
表空间
SELECT TABLESPACE_NAME FROM SYS.DBA_TABLESPACES;
数据文件
SELECT FILE_NAME, FILE_ID, TABLESPACE_NAME FROM SYS.DBA_DATA_FILES;
数据库连接
存储数据库连接的系统表/视图主要有:
DBA_LINKS
描述数据库中所有的连接的属性。
ALL_LINKS
描述数据库中所有的用户可访问的连接的属性。
USER_LINKS
描述数据库中当前用户的连接属性。
因此,可以从DBA_DB_LINKS中取得连接:
SELECT * FROM SYS.DBA_DB_LINKS;
同义词
SELECT * FROM SYS.ALL_SYNONYMS WHERE TABLE_OWNER = 'DBAUDIT';
程序包
取得程序包可以用:
SELECT OBJECT_NAME FROM SYS.ALL_OBJECTS WHERE OBJECT_TYPE = 'PACKAGE';
取得隶属于某个用户的程序包可以用:
SELECT OBJECT_NAME FROM SYS.ALL_OBJECTS WHERE OBJECT_TYPE = 'PACKAGE' AND OWNER = 'DBAUDIT';
取得程序包内容可以用:
SELECT TEXT FROM SYS.ALL_SOURCE WHERE NAME = 'XXX' AND TYPE = 'PACKAGE';
程序包体
取得程序包体可以用:
SELECT OBJECT_NAME FROM SYS.ALL_OBJECTS WHERE OBJECT_TYPE = 'PACKAGE BODY';
取得隶属于某个用户的程序包可以用:
SELECT OBJECT_NAME FROM SYS.ALL_OBJECTS WHERE OBJECT_TYPE = 'PACKAGE BODY ' AND OWNER = 'DBAUDIT';
取得程序包内容可以用:
SELECT TEXT FROM SYS.ALL_SOURCE WHERE NAME = 'XXX' AND TYPE = 'PACKAGE BODY ';
簇
暂不扫描。
高级队列
暂不扫描。
序列
暂不扫描。
数组类型
暂不扫描。
维
暂不扫描。
Java源
暂不扫描。
对象类型
暂不扫描。
刷新组
暂不扫描。
概要文件
暂不扫描。
Sybase
取得数据库名的方法
系统存储过程sp_helpdb
或者
USE master
SELECT d.name dbname, u.name owner FROM sysdatabases d, sysusers u WHERE d.suid = u.suid
取得表的方法
系统存储过程
USE xxx
EXEC sp_help
或者
获取指定数据库的用户表:
USE DBAudit
SELECT sysobjects.name AS tname, sysusers.name AS owner FROM sysobjects, sysusers WHERE sysobjects.uid = sysusers.uid AND type = 'U'
获取指定数据库的系统表:
USE DBAudit
SELECT sysobjects.name AS tname, sysusers.name AS owner FROM sysobjects, sysusers WHERE sysobjects.uid = sysusers.uid AND type = 'S'
或者统一使用:
USE DBAudit
SELECT sysobjects.name AS tname, sysusers.name AS owner FROM sysobjects, sysusers WHERE sysobjects.uid = sysusers.uid AND (type = 'U' OR type = 'S')
注:
sysobjects中type字段类型解释:
C = CHECK 约束
D = 默认值或 DEFAULT 约束
F = FOREIGN KEY 约束
L = 日志
FN = 标量函数
IF = 内嵌表函数
P = 存储过程
PK = PRIMARY KEY 约束(类型是 K)