Sql 检查列上是否存在函数

Sql 检查列上是否存在函数,sql,oracle,function,plsql,metatable,Sql,Oracle,Function,Plsql,Metatable,我一直在研究一个元表,它是3个表的集成(具有相同的数据库结构,但列名可能不同),我必须编写一个函数来检查列上是否有函数(to_Char())。还有很多专栏。因此,必须对语法进行泛化,以搜索所有必须检查char函数是否已写入的列 例如: CONONICAL DB1 DataType DB1 Function DB1 DB2 CUSTOMER_TABLE customer_tb Table CUSTOMERS

我一直在研究一个元表,它是3个表的集成(具有相同的数据库结构,但列名可能不同),我必须编写一个函数来检查列上是否有函数(to_Char())。还有很多专栏。因此,必须对语法进行泛化,以搜索所有必须检查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)

如果我没说错的话,您要求使用所有基于函数的索引及其DDL,这样您就可以确定在哪个列上应用了什么类型的索引,希望下面的代码能有所帮助

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';
选择IDX.TABLE\u所有者,
IDX.INDEX_名称,
IDX.INDEX_类型,
IDX.TABLE_名称,
IND.COLUMN\u NAME,
dbms_metadata.get_ddl('INDEX',IDX.INDEX_NAME,IDX.TABLE_OWNER)ddl_脚本
从所有索引IDX,
所有IND列IND
其中所有者=
和IND.INDEX\u NAME=IDX.INDEX\u NAME
和IND.TABLE_OWNER=IDX.TABLE_OWNER
和IDX.INDEX_TYPE='基于函数的正态';

这里没有人可以帮你解决作业。请更具体地告诉我们你到目前为止做了什么,你到底面临什么问题“如果专栏对他们有作用”对我来说没有任何意义。除非您讨论的是计算列,否则列没有函数。您讨论的是基于列的函数索引吗?如果您想要质量和质量响应,请具体说明。我不知道“功能DB1”是什么意思。列没有“具有”函数。如果这解决了您的问题,请接受答案,否则请告知我们确切的需求。