gpt4 book ai didi

sql - 动态选择要在 SELECT 语句中使用的列

转载 作者:行者123 更新时间:2023-12-04 10:29:23 25 4
gpt4 key购买 nike

我希望能够使用系统表(在本例中为 Oracle)来驱动 SELECT 语句中使用哪些字段。就像是:

SELECT 
(
select column_name
from all_tab_cols
where table_Name='CLARITY_SER'
AND OWNER='CLARITY'
AND data_type='DATE'
)
FROM CLARITY_SER

此语法不起作用,因为子查询返回多行,而不是具有多列的一行。

是否可以通过查询表模式信息以仅选择某些列来动态生成 SQL 语句?

** 编辑 **
如果可能,在不使用函数或过程的情况下执行此操作。

最佳答案

你可以这样做:

declare
l_sql varchar2(32767);
rc sys_refcursor;
begin
l_sql := 'select ';
for r in
( select column_name
from all_tab_cols
where table_Name='CLARITY_SER'
AND OWNER='CLARITY'
AND data_type='DATE'
)
loop
l_sql := l_sql || r.column_name || ',';
end loop;
l_sql := rtrim(l_sql,',') || ' from clarity_ser';
open rc for l_sql;
...
end;

关于sql - 动态选择要在 SELECT 语句中使用的列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7041553/

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