检查列

时间:2015-11-30 19:59:22

标签: sql oracle function plsql metatable

我一直在研究一个元表,它是3个表的集成(具有相同的数据库结构,但列名可能不同),我必须编写一个函数来检查列是否有函数(to_Char() ) 在他们。还有很多专栏。因此,必须将语法推广到搜索所有已写入to_char函数的列。

示例:

CONONICAL          DB1          DataType DB1  Function DB1      DB2
CUSTOMER_TABLE    customer_tb   Table         CUSTOMERS         Table
CUSTOMER_ID       Cust_id       number        to_char(cust_id)  cust_id number
CUSTOMER_NAME     Cust_name     varchar2(20)  cust_name         varchar2(20)
CUSTOMER_ADDRESS  Cust_address  varchar2(20)  cust_add          varchar2(20)

1 个答案:

答案 0 :(得分:0)

如果我没有错,你要求所有基于函数的INDEXES及其DDL,以便您可以确定哪个类型的INDEX应用于哪一列希望下面的代码有帮助。

SELECT IDX.TABLE_OWNER,
  IDX.INDEX_NAME,
  IDX.INDEX_TYPE,
  IDX.TABLE_NAME,
  IND.COLUMN_NAME,
  dbms_metadata.get_ddl('INDEX',IDX.INDEX_NAME,IDX.TABLE_OWNER) ddl_script
FROM all_indexes IDX,
  ALL_IND_COLUMNS IND
WHERE OWNER         = <OWNER_NAME>
AND IND.INDEX_NAME  = IDX.INDEX_NAME
AND IND.TABLE_OWNER = IDX.TABLE_OWNER
AND IDX.INDEX_TYPE  = 'FUNCTION-BASED NORMAL';