gpt4 book ai didi

sql - 如何将列名动态传递给查询?

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

以下是我的问题和所需的解决方案。

查询 1:

Select colnames from table1;

Query1 Result:
col1
col2
col3
col4

查询 2:
Select a1.* 
from table2 a1;

-- should translate to
select a1.col1, a1.col2, a1.col3, a1.col4 from table2 a1;

我的第一个查询将给出列名列表,我需要在第二个查询中用这些列名替换 .*。我怎样才能做到这一点?

最佳答案

您正在寻找动态 SQL。这个想法是从 SQL 查询的结果生成查询字符串。然后你可以用 execute immediate 运行它.

在您的用例中,这看起来像:

declare
p_sql varchar2(100);
begin
select
'select '
|| listagg('a1.' || colnames, ', ') within group(order by colnames)
|| ' from table2 a1'
into p_sql
from table1;

dbms_output.put_line('sql: ' || p_sql); -- debug
execute immediate p_sql; -- execute
end;
/

对于您的样本数据, this generates :
dbms_output:
sql: select a1.col1, a1.col2, a1.col3, a1.col4 from table2 a1

关于sql - 如何将列名动态传递给查询?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61349851/

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