实验数据初始化:

复制代码代码如下所示:

创建表的T为SELECT * FROM hr.employees;

创建inx_t1 T指数(employee_id,first_name降序,last_name);

创建inx_t2 T指数(job_id,hire_date);



显示表所有索引的信息。

使用DBA登录

复制代码代码如下所示:

设置线宽300;

设置为100;

Col C1格式A20;

Col C2格式A20;

Col C3格式A20;

Col C4格式A20;

Col C5格式A20;

Col index_name格式A20;

选择index_name,

马克斯(解码(column_position,1,column_name | | ',' | | column_length | | ',' | |下降,空))C1,

马克斯(解码(column_position,2,column_name | | ',' | | column_length | | ',' | |下降,空))C2,

马克斯(解码(column_position,3,column_name | | ',' | | column_length | | ',' | |下降,空))C3,

马克斯(解码(column_position,4,column_name | | ',' | | column_length | | ',' | |下降,空))C4,

C5(解码(column_position,5,column_name | | ',' | | column_length | | ',' | |下降,空))(column_position,column_name | | ',' | | column_length | | ',' | |下降,空))

(从

选择index_name,column_name,column_length,column_position,下降

从dba_ind_columns

在table_owner = 'lihuilin

和table_name =不

为了index_name,column_position

Group by INDEX_NAME);



与普通用户登录

复制代码代码如下所示:

设置线宽300;

设置为100;

Col C1格式A20;

Col C2格式A20;

Col C3格式A20;

Col C4格式A20;

Col C5格式A20;

Col index_name格式A20;

选择index_name,

马克斯(解码(column_position,1,column_name | | ',' | | column_length | | ',' | |下降,空))C1,

马克斯(解码(column_position,2,column_name | | ',' | | column_length | | ',' | |下降,空))C2,

马克斯(解码(column_position,3,column_name | | ',' | | column_length | | ',' | |下降,空))C3,

马克斯(解码(column_position,4,column_name | | ',' | | column_length | | ',' | |下降,空))C4,

C5(解码(column_position,5,column_name | | ',' | | column_length | | ',' | |下降,空))(column_position,column_name | | ',' | | column_length | | ',' | |下降,空))

(从

选择index_name,column_name,column_length,column_position,下降

从user_ind_columns

在table_name =不

为了index_name,column_position

集团通过index_name);





但您可以看到,以逆序创建的索引字段是以sys命名的。

作为反向函数索引创建的Oracle索引字段。

它的信息保存在user_ind_expressions观。



该user_ind_expressions查看column_expression字段类型是长。

王巩的版本可以解决这个问题。

复制代码代码如下所示:

创建或替换功能(long_2_varchar

p_index_name在user_ind_expressions index_name %型,

p_table_name在user_ind_expressions table_name %型,

p_column_position在user_ind_expressions table_name %型)。

返回空

作为

l_column_expression长;

开始

选择column_expression

为l_column_expression

从user_ind_expressions

在index_name = p_index_name

和table_name = p_table_name

和column_position = p_column_position;

返回substr(l_column_expression,1, 4000);

结束;

/



复制代码代码如下所示:

设置线宽300;

设置为100;

Col C1格式A20;

Col C2格式A20;

Col C3格式A20;

Col C4格式A20;

Col C5格式A20;

Col index_name格式A20;

选择index_name,

马克斯(解码(column_position,1,column_name | || |下降,空))

C1,

马克斯(解码(column_position,2,column_name | || |下降,空))

C2,

马克斯(解码(column_position,3,column_name | || |下降,空))

C3,

马克斯(解码(column_position,4,column_name | || |下降,空))

补体第四成份,

马克斯(解码(column_position,5,column_name | || |下降,空))

C5

从a.index_name(选择,

(代替

(解码

下降,

降序,long_2_varchar(b.index_name,

b.table_name,

b.column_position),

a.column_name),

,

')

column_name,

a.column_length,

a.column_position,

下降

从user_ind_columns一

左连接

user_ind_expressions B

在a.index_name = b.index_name

和a.table_name = b.table_name

在a.table_name =不

为了index_name,column_position)

集团通过index_name;