Sql 在Oracle中使用select查询选择动态列数

Sql 在Oracle中使用select查询选择动态列数,sql,oracle,oracle11g,oracle10g,Sql,Oracle,Oracle11g,Oracle10g,假设有一个表(TB\u dynamic\u date),其列名为“要选择的数据” 假设还有另一个带有列名的表TB\u Main\u Data 姓名、司法部、身份证 那么,是否可以编写一个查询,通过该查询,我可以使用表TB\u dynamic\u date从TB\u Main\u数据中获取动态列数 其中,TB\u dynamic\u data包含“data\u to\u select”下的以下记录作为字符串 1)Name,DOJ 2)Name,id 3)Name,id,DOJ 4)Name,id,

假设有一个表(TB\u dynamic\u date),其列名为“要选择的数据”

假设还有另一个带有列名的表TB\u Main\u Data 姓名、司法部、身份证

那么,是否可以编写一个查询,通过该查询,我可以使用表TB\u dynamic\u dateTB\u Main\u数据中获取动态列数 其中,TB\u dynamic\u data包含“data\u to\u select”下的以下记录作为字符串

1)Name,DOJ
2)Name,id
3)Name,id,DOJ
4)Name,id,DOj,Name||id
我需要做的事情如下:-

select **(1/2/3/4 record from TB_dynamic_data)** from TB_Main_Data

我希望,我能够清楚地解释我想问的问题。

您可以像下面这样使用动态查询

Declare @cols= ( select Data_to_select from TB_Dynamic_data where Id=2)
Declare @query nvarchar(max)  
Set @query = ' select '  + @cols + ' from TB_main_data'

Exec(@query)

在Oracle中,这看起来像:

declare
    v_columns varchar(4000);
    v_sql varchar(4000);
begin
    select data_to_selecct
    into v_columns
    from tb_dynamic_data
    where <whatever>;

    v_sql := 'select ' || v_columns || ' from tb_main_data';
    execute immediate v_sql;
end;
声明
v_列varchar(4000);
v_sql varchar(4000);
开始
选择要选择的数据
进入v_列
从tb_动态_数据
哪里
v|U sql:=“从tb|U主数据中选择”|| v|U列| |”;
执行即时v_sql;
结束;

您可以使用动态SQL(立即执行),但不能使用简单的查询。但是如何操作??请给出一个更新的例子好吗???动态sql只能在PL/sql中生成和执行。编写一个匿名块,动态准备查询,将其与为列名或值声明和分配的变量连接起来。