oracle动态表名查询 如何写sql语句或者存储过程实现: 根据某张表中的某个字段的值决定查询哪一张表 20

有表A,B,C表A结构IDFLAG10213040首先根据ID查表A,得到一个flag的值,如果值为0,要求查表B得到该结果集,若值为1,要求得到C表的结果集... 有表A,B,C
表A结构
ID FLAG
1 0
2 1
3 0
4 0

首先根据ID查表A,得到一个flag的值,如果值为0,要求查表B得到该结果集,若值为1,要求得到C表的结果集
展开
 我来答
woaigigi66
2012-01-02 · TA获得超过176个赞
知道答主
回答量:75
采纳率:100%
帮助的人:45.7万
展开全部
begin
for cur in(select id,flag fromu a)
loop
if cur.flag=0 then
select * from b;
...
else
select * from C;
...
end if;
end loop;
end;
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
wolfy1016
2012-01-03 · TA获得超过244个赞
知道小有建树答主
回答量:353
采纳率:0%
帮助的人:290万
展开全部
用动态语句
或试试这样行不行
select * from decode(select flag from a where id=1,0,(select * from b),1,(select * from c))
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
永恒度兰宁
2011-12-31 · TA获得超过153个赞
知道小有建树答主
回答量:165
采纳率:0%
帮助的人:138万
展开全部
declare
as_flag varchar2(10);
as_sql varchar2(300);
begin
select FLAG into as_flag from A where ID = 1;
if as_flag = '0' then
select * from b where ....;
else
select * from C where ....;
end if;

end;
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
bh211314
2011-12-31
知道答主
回答量:6
采纳率:0%
帮助的人:9828
展开全部
declare
as_flag varchar2(10);
as_sql varchar2(300);
begin
select FLAG into as_flag from A where ID = 1;
if as_flag = '0' then
insert into 结果表(xx..xx) select xx..xx from b where ....;
else
insert into 结果表(xx..xx) select xx..xx from c where ....;
end if;

end;
更多追问追答
追问
insert into 结果表(xx..xx) select xx..xx from c where ....;
结果表(xx..xx)代表什么,后面为什么又跟着select
追答
字段名称,insert ……select 语法 
将select后面查询的数据插入到前面的insert 表中~~
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友825bed6
2011-12-31 · 超过15用户采纳过TA的回答
知道答主
回答量:45
采纳率:0%
帮助的人:37.3万
展开全部
上面面答案不对,直接select是select不出来结果集的,可以通过游标提取数据放出record,逻辑正确
更多追问追答
追问
那应该怎么弄游标提取数据
追答
你b表,c表的结构是什么
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式