gpt4 book ai didi

sql - 如何在名称取自另一个表的表上执行 sql 查询

转载 作者:行者123 更新时间:2023-12-04 22:41:06 25 4
gpt4 key购买 nike

我有一个存储其他表名称的表。喜欢

COL_TAB
--------------
TABLE_NAME
--------------
TAB1
TAB2
TAB3

我想要做的是,我想在这样的表上运行 sql 查询,
SELECT * FROM (SELECT TABLE_NAME from COL_TAB WHERE TABLE_NAME = 'TAB1')

谢谢

最佳答案

Oracle SQL 查询可以使用动态表名,使用 Oracle Data Cartridge 和 ANY* 类型。但在使用这些高级功能之前,请退后一步,问问自己这是否真的有必要。

你真的需要一个动态的 SQL 语句吗?通常,这可以由可以提交不同类型查询的应用程序更好地处理。有许多应用程序编程语言和工具包可以处理意外类型。如果这是针对仅限数据库的操作,那么通常会将结果存储在某处,在这种情况下,PL/SQL 和动态 SQL 会容易得多。

如果您确定自己遇到了需要完全动态 SQL 语句的罕见情况之一,那么您将需要类似我的开源项目 Method4 的东西。 .下载并安装它并尝试以下代码。

架构设置

create table tab1(a number);
create table tab2(b number);
create table tab3(c number);
insert into tab1 values(10);
insert into tab2 values(20);
insert into tab3 values(30);
create table col_tab(table_name varchar2(30), id number);
insert into col_tab values('TAB1', 1);
insert into col_tab values('TAB1', 2);
insert into col_tab values('TAB1', 3);
commit;

查询
select * from table(method4.dynamic_query(
q'[
select 'select * from '||table_name sql
from col_tab
where id = 1
]'));

结果:
A
--
10

您很快就会发现查询中的查询非常困难。可能有一种更简单的方法来做到这一点,但它可能需要设计更改。

关于sql - 如何在名称取自另一个表的表上执行 sql 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38377222/

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