gpt4 book ai didi

sql - 选择 Oracle 字典 View 中可能不存在的列

转载 作者:行者123 更新时间:2023-12-04 14:38:48 26 4
gpt4 key购买 nike

我想在 SYS.ALL_ARGUMENTS 上创建一个向后兼容的查询。在 Oracle 11g 中,添加了有用的 ALL_ARGUMENTS.DEFAULTED 列。现在,如果我对 Oracle 10g 运行此查询:

SELECT defaulted FROM all_arguments

当然,我得到一个错误。

ORA-00904: "SYS"."ALL_ARGUMENTS"."DEFAULTED": invalid identifier

我想做的是:

SELECT CASE WHEN column_exists("defaulted") 
THEN defaulted
ELSE 'N'
END
FROM all_arguments

甚至更好

SELECT evaluate_column_on_current_row(column_name           => "defaulted", 
default_if_not_exists => 'N')
FROM all_arguments

有没有什么方法可以在单个 SQL 查询中做到这一点,而无需求助于 PL/SQL?或者我应该像这样先检查 Oracle 版本:

SELECT count(*) 
FROM all_tab_cols
WHERE owner = 'SYS'
AND table_name = 'ALL_ARGUMENTS'
AND column_name = 'DEFAULTED'

最佳答案

引用不存在的列的查询无法生成有效的计划。

您需要选择一种提交的查询始终有效的方法。是动态生成/执行它们,还是其他一些方法。

但是,如果您提交要解析的查询,并且它包含存在表中不存在的字段,解析器会将其返回给您。

关于sql - 选择 Oracle 字典 View 中可能不存在的列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10243404/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com