检查列上是不是存在函数
Posted
技术标签:
【中文标题】检查列上是不是存在函数【英文标题】:Check if function exists on a column检查列上是否存在函数 【发布时间】:2015-11-30 19:59:22 【问题描述】:我一直在研究一个元表,它是 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)
【问题讨论】:
这里没有人可以解决您的任务。请更具体地告诉我们您到目前为止做了什么以及您面临的具体问题 “如果列上有功能”对我来说没有任何意义。除非您在谈论计算列,否则列不“具有”功能。 您是在谈论基于函数的列索引吗?如果您想要快速和高质量的响应,请具体说明 我不知道“Function DB1”是什么意思。列不“具有”功能。它可能被一个人使用。 【参考方案1】:如果我没记错的话,您要求所有基于函数的索引及其 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';
【讨论】:
如果这解决了您的问题,请接受答案,否则请告诉我们确切的需求。以上是关于检查列上是不是存在函数的主要内容,如果未能解决你的问题,请参考以下文章