Sql 在Oracle中使用select查询选择动态列数
假设有一个表(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”下的以下记录作为字符串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,
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中生成和执行。编写一个匿名块,动态准备查询,将其与为列名或值声明和分配的变量连接起来。