如何导出oracle的数据字典

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何导出oracle的数据字典相关的知识,希望对你有一定的参考价值。

参考技术A -- 查询某表的数据字典
SELECT A.TABLE_NAME AS 表名,A.COLUMN_NAME AS 字段名,
DECODE(A.CHAR_LENGTH,0,DECODE(A.DATA_SCALE,NULL,A.DATA_TYPE,A.DATA_TYPE||'('||A.DATA_PRECISION||','||A.DATA_SCALE||')'),
A.DATA_TYPE||'('||A.CHAR_LENGTH||')') as 字段类型1,A.DATA_TYPE AS 字段类型,A.DATA_PRECISION AS 有效位,A.DATA_SCALE AS 精度值,
A.CHAR_LENGTH AS 字段长度,A.NULLABLE AS 能否为空
FROM sys.user_tab_columns A where A.table_name = 'TAM_ADDRESS'
-- 具有dba权限用户导出数据字典
SELECT A.TABLE_NAME AS 表名,A.COLUMN_NAME AS 字段名,
DECODE(A.CHAR_LENGTH,0,DECODE(A.DATA_SCALE,NULL,A.DATA_TYPE,A.DATA_TYPE||'('||A.DATA_PRECISION||','||A.DATA_SCALE||')'),
A.DATA_TYPE||'('||A.CHAR_LENGTH||')') as 字段类型,A.DATA_DEFAULT AS 默认值,
A.NULLABLE AS 能否为空,B.comments AS 备注
FROM sys.all_tab_columns A,sys.DBA_COL_COMMENTS B
WHERE A.owner=B.owner AND A.table_name=B.table_name AND A.COLUMN_NAME=B.COLUMN_NAME AND A.owner='guoqiang' AND
A.TABLE_NAME IN (
'TB_SUBJECT', 'TB_SUBJECT_BALANCE', 'TB_VOUCHER', 'TB_VOUCHER_DETAILS',
'TB_CUSTOMER', 'TB_VOUCHER_CLASSIFY_MODE', 'TB_VOUCHER_TYPE', 'TB_ASSET',
'TB_ASSET_CATALOG', 'TB_M_DM_ASSETS_LIABI_RPT', 'TB_M_DM_PROFIT_RPT',
'TB_M_DM_REVENUE_RPT', 'TB_M_DM_COST_RPT')ORDER BY A.TABLE_NAME
SELECT A.TABLE_NAME AS 表名,A.COLUMN_NAME AS 字段名,
DECODE(A.CHAR_LENGTH,0,DECODE(A.DATA_SCALE,NULL,A.DATA_TYPE,A.DATA_TYPE||'('||A.DATA_PRECISION||','||A.DATA_SCALE||')'),
A.DATA_TYPE||'('||A.CHAR_LENGTH||')') as 字段类型,A.DATA_DEFAULT AS 默认值,
A.NULLABLE AS 能否为空,B.comments AS 备注
FROM sys.user_tab_columns A,sys.user_col_comments B
WHERE A.table_name=B.table_name AND A.COLUMN_NAME=B.COLUMN_NAME AND
A.TABLE_NAME IN (
'TB_SUBJECT', 'TB_SUBJECT_BALANCE', 'TB_VOUCHER', 'TB_VOUCHER_DETAILS',
'TB_CUSTOMER', 'TB_VOUCHER_CLASSIFY_MODE', 'TB_VOUCHER_TYPE', 'TB_ASSET',本回答被提问者和网友采纳

ORACLE如何实现函数包存储过程的导入和导出

 

 

建 议可以用常规的检查,检查一下:数据字典信息/exp 导出结构检查

 

1.检查

SELECT * FROM ALL_SOURCE t WHERE T.OWNER = \'要查询用户\' AND t.TYPE = \'PACKAGE BODY\'

select * from USER_SOURCE where type = \'PACKAGE\'

 

2.exp 结构。检查方法如下:

http://blog.csdn.net/ideality_hunter/article/details/52087012

 

oracle怎么导出function和procedure,即函数和存储过程?

1通过在cmd中 使用exp,导出为dmp格 式。

2通过plsql工 具的Tools->export user objects,导出 为sql格式。状态由红变黑,表示导出成功了。

注 意不要导出owner、storage、privilege等。

 

3.关于存储过程加密也是一种可能。文档如下:

http://www.cnblogs.com/matrixworld/p/5446254.html

 

4.

请把procedure(HSDB_DB)发给我。

 

-> package 只可以到包的主体。

-> package bodies 可以看到包的bodys

 

->在PL/SQL developer 选择 存储过程,也会出现提示 是不是存储过程。

 

 

 

 

 

 

 

5.存储过程分析

 

https://www.cnblogs.com/dc-earl/articles/9260111.html

oracle存储过程(一):简单入门

 

一、定义

    存储过程是一组为了完成特定功能的SQL语句,经编译后存储在数据库中。

   点击查看优缺点。

二、存储过程简单入门

    第一个存储过程:打印hello word, my name is stored procedure内容

1
2
3
4
5
create or replace procedure myDemo01
as
begin
  dbms_output.put_line(\'hello word, my name is stored procedure\');
end;

create or replace procedure:关键字用来创建或覆盖一个原有的存储过程。

myDemo01:自定义的存储过程的名字。
as:关键字。
    注:
        在存储过程(PROCEDURE)和函数(FUNCTION)中没有区别;

       在视图(VIEW)中只能用AS不能用IS;

       在游标(CURSOR)中只能用IS不能用AS。

begin:关键字。
dbms_output.put_line(\'hello word, my name is stored procedure\'); 输出内容。
end;关键字。

    存储过程的调用

1
2
3
4
5
6
7
8
declare
begin
  myDemo01;
end;
 
begin
  myDemo01; --在此处也可使用myDemo01();完成存储过程的调用
end;
1
call myDemo01();--call 存储过程名可完成调用,注意括号不能少
1
2
3
4
SQL> set serveroutput on --可以再command命令窗口执行
SQL> exec mydemo01 --下面是输出结果
hello word, my name is stored procedure
PL/SQL procedure successfully completed

三种方式可以完成存储过程的调用,分别为声明declare关键字和不声明declare关键字;call和Commond窗口执行命令。执行的结果如下所示

第二个存储过程:变量声明,赋值

1
2
3
4
5
6
7
8
9
create or replace procedure myDemo02
as
name varchar(10);--声明变量,注意varchar需要指定长度
age int;
begin
  name:=\'xiaoming\';--变量赋值
  age:=18;
  dbms_output.put_line(\'name=\'||name||\', age=\'||age);--通过||符号达到连接字符串的功能
end;

第三个存储过程:带有参数的存储过程

1
2
3
4
5
6
7
8
9
create or replace procedure myDemo03(name in varchar,age in int)
as
begin
  dbms_output.put_line(\'name=\'||name||\', age=\'||age);
end;
 
begin
  myDemo03(\'xiaoming\',18);
end;

  在调用存储过程时,如果存储过程没有参数,调用时括号()可以不带。

        存储过程带参数需要注意参数的传递参数时的一致性,按顺序依次传递。

第四个存储过程:实参形参问题

1
2
3
4
5
6
7
8
9
10
11
12
13
create or replace procedure myDemo04(name in varchar,age in int)
as
begin
  dbms_output.put_line(\'name=\'||name||\', age=\'||age);
end;
 
declare
 name varchar(10);
 age int;
begin
  name:=\'xiaoming\';
  age:=18;
  myDemo04(name=>name,age=>18);--此时不能myDemo04(name=>name,18),不能完成调用。
1
end;

注;在调用存储过程时,=>前面的变量为存储过程的形参且必须于存储过程中定义的一致,而=>后的参数为实际参数。当然也不可以不定义变量保存实参

第五个存储过程:in,out参数问题

1
2
3
4
5
6
7
8
9
10
11
12
13
14
create or replace procedure myDemo05(name out varchar,age in int)
as
begin
       dbms_output.put_line(\'age=\'||age);
  select \'xiaoming\' into name from dual;
end;
 
declare
 name varchar(10);
 age int;
begin
  myDemo05(name=>name,age=>10);
  dbms_output.put_line(\'name=\'||name);
end;

 注:in代表输入,out用于输出,参数默认类型是in类型。

第六个存储过程:异常问题,执行结果见下图

1
2
3
4
5
6
7
8
9
10
11
12
13
create or replace procedure mydemo0006
as
age int;
begin
  age:=10/0;
  dbms_output.put_line(age);
  exception when others   then
    dbms_output.put_line(\'error\');
end;
 
begin
  mydemo0006();
end;

 

总结:简单学习oracle存储过程,在oracle存储过程(二)将对两种循环以及增删改查操作做进一步的认识。

作者: i孤独行者
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
 
分类: oracle

以上是关于如何导出oracle的数据字典的主要内容,如果未能解决你的问题,请参考以下文章

如何用Navicat导出MySQL的数据字典

如何将一个数据库的所有table都导出,整理成数据字典

oracle 导出数据字典

Oracle导出数据字典SQL语句

有啥样的工具,可以自动生成Oracle数据库的数据字典

SQL数据库数据字典怎么生成的?