oracle PL/sql 如果一张表的每行数据是另一个表的列名 怎么用存储过程查询此列名下的数据信息呢?

 我来答
北桓崴
2011-05-06 · TA获得超过159个赞
知道小有建树答主
回答量:157
采纳率:0%
帮助的人:130万
展开全部
先直接select查出列名,然后用双竖线和逗号符等,拼动态sql,这个字符串取名dynsql的话,就用execute immediate dynsql;这句来执行。
追问
如果 一表的数据(也就是2表的列名)
一表表名为a 二表表名为b 如图
(a表的数据不能直接用,因为它是由其他操作获取的)
具体的语句应该怎么写呢?谢谢
追答
v_dysql = 'select rownum as ind';
for v_aname in select name from a do
loop
v_dysql := v_dysql || ',' || v_aname;
end loop
v_dysql := v_dysql || ' from b'; --from前面有空格
execute immediate v_dysql into rec_temp; --rec_temp可以是个record table,自定义的,但可能这个列数,由那些字段你还是不知道,所以呢,最好就是把前面组装的动态sql中的字段使用连接字符拼成一个长的字符串,这样可以把结果插入到一个很长的varchar2变量中,然后根据连接符解串。

---for循环的语法可能有问题,你自己再调下
--这个串的第一个字段是个序列值
kfjchvq
2011-05-15 · TA获得超过1964个赞
知道小有建树答主
回答量:1586
采纳率:0%
帮助的人:766万
展开全部
建分区,加索引,优化你的SQL
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
vndojsa
2011-05-09 · TA获得超过809个赞
知道小有建树答主
回答量:1042
采纳率:0%
帮助的人:570万
展开全部
建分区,加索引,优化你的SQL
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
ubuntu110
2011-05-06
知道答主
回答量:14
采纳率:0%
帮助的人:0
展开全部
说得有些模糊,能否描述清楚些?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式