oracle PL/sql 如果一张表的每行数据是另一个表的列名 怎么用存储过程查询此列名下的数据信息呢?
4个回答
展开全部
先直接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循环的语法可能有问题,你自己再调下
--这个串的第一个字段是个序列值
展开全部
建分区,加索引,优化你的SQL
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
建分区,加索引,优化你的SQL
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询