oracle怎么只导出索引,oracle存储过程导出索引

oracle存储过程导出索引

1、首先要建立一个directory

create or replace directory DIR_DUMP as 'd:/index';

2、执行过程,在路径'd:/index' 下有index.txt文件为导出所有索引的创建语句。

create or replace procedure index_frame

is

type index_name_type is table of user_indexes.index_name%type;

v_index_name index_name_type;

type index_type_type is table of user_indexes.index_type%type;

v_index_type index_type_type;

type table_name_type is table of user_indexes.table_name%type;

v_table_name table_name_type;

type ind_post_cur is ref cursor;

ind_post ind_post_cur;

v_column_name user_ind_columns.COLUMN_NAME%type;

v_column_position user_ind_columns.column_position%type;

frame_name UTL_FILE.file_type;

v_str clob;

s_index_type  user_indexes.index_type%type;

status number;

begin

frame_name := UTL_FILE.fopen('DIR_DUMP','index.txt','w');

select index_name,index_type,table_name  bulk collect into v_index_name,v_index_type,v_table_name

from user_indexes where index_name not like '%BIN$%';

for i in 1..v_index_name.count loop

status :=1;

if v_index_type(i) = 'NORMAL' then

s_index_type := '';

else s_index_type := v_index_type(i);

end if;

open  ind_post for  select column_name,column_position   from user_ind_columns

where index_name=upper(v_index_name(i))

order by column_position asc;

v_str := 'create '||s_index_type||' index '||v_index_name(i)||' on '||v_table_name(i)||' (';

loop

fetch ind_post into v_column_name,v_column_position;

if ind_post%notfound then

v_str := v_str||') ;';

exit;

elsif status =1 then

v_str := v_str||v_column_name;

status := 0 ;

else

v_str := v_str||','||v_column_name;

end if;

end loop;

UTL_FILE.put_line(frame_name,v_str);

close ind_post;

end loop;

UTL_FILE.fclose_all;

end;

http://www.dengb.com/oracle/481216.htmlwww.dengb.comtruehttp://www.dengb.com/oracle/481216.htmlTechArticleoracle存储过程导出索引 1、首先要建立一个directory create or replace directory DIR_DUMP as d:/index; 2、执行过程,在路径d:/index 下有index.txt文件为导出...

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值