请教一个Oracle SQL语句的问题。问题具体描述如下
答案:3 悬赏:0 手机版
解决时间 2021-03-06 00:40
- 提问者网友:谁的错
- 2021-03-05 01:03
有两个表:表1的列名不明确,分别为C1,C2,C3,C4。表2矗贰避荷篆沽遍泰拨骏两列,一列为index,一列为colname,表2配置了表1中每一列代表什么,现在需要做一个视图,把表1的c1,c2,c3,c4分别替换成表2中配置的列名。
问题补充:
最佳答案
- 五星知识达人网友:梦中风几里
- 2021-03-05 02:01
用动态语句试一下。
declare
a varchar2(1000);
b varchar2(50);
cursor cur is select colname ||' '||index||',' str from 表2;
begin
a:='';
b:='';
open cur;
loop
fetch矗贰避荷篆沽遍泰拨骏 str into b;
exit when cur%notfound;
a:=a||b;
end loop;
a:=substr(a,1,length(a)-1);--去掉最后一个逗号
close cur;
execute immediat 'create or replace view view_name as select '||a||' from 表1'
end;
没有测试,大概这样的思路是能实现的。
declare
a varchar2(1000);
b varchar2(50);
cursor cur is select colname ||' '||index||',' str from 表2;
begin
a:='';
b:='';
open cur;
loop
fetch矗贰避荷篆沽遍泰拨骏 str into b;
exit when cur%notfound;
a:=a||b;
end loop;
a:=substr(a,1,length(a)-1);--去掉最后一个逗号
close cur;
execute immediat 'create or replace view view_name as select '||a||' from 表1'
end;
没有测试,大概这样的思路是能实现的。
全部回答
- 1楼网友:春色三分
- 2021-03-05 03:35
用动态语句试一下。
declare
a varchar2(1000);
b varchar2(50);
cursor cur is select colname ||' '||index||',' str from 表2;
begin
a:='';
b:='';
open cur;
loop
fetch str into b;
exit when cur%notfound;
a:=a||b;
end loop;
a:=substr(a,1,length(a)-1);--去掉最后一个逗号
close cur;
execute immediat 'create or replace view view_name as select '||a||' from 表1'
end;
没有测试,大概这样的思路是能实现的。
- 2楼网友:不甚了了
- 2021-03-05 02:54
其实这个呢,我个人觉得吧,如果像这样,列不是很多。就在矗贰避荷篆沽遍泰拨骏创建视图的时候起个别名就好了,一一对应过去。。。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯