检查列上是不是存在函数

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';

【讨论】:

如果这解决了您的问题,请接受答案,否则请告诉我们确切的需求。

以上是关于检查列上是不是存在函数的主要内容,如果未能解决你的问题,请参考以下文章

VimL:检查函数是不是存在

检查用户名是不是存在函数返回 TRUE 即使不存在

检查 B 列中的值是不是存在于 A 列中

如何在编译时检查是不是存在可以使用特定参数集调用的函数?

如何检查 SQL 数据库中是不是存在函数?

R - 内部函数检查对象是不是存在