17,378
社区成员
发帖
与我相关
我的任务
分享16:04:08 scott@TUNGKONG> select * from a;
DATA VAL B_ID
---------- --- ----------
200910 a 1
200910 b 2
200909 c 1
200909 d 2
已用时间: 00: 00: 00.00
16:04:11 scott@TUNGKONG> select * from b;
ID NAME
---------- ----------
1 一
2 二
已用时间: 00: 00: 00.01
16:04:15 scott@TUNGKONG> create or replace procedure pro_test(strName varchar2)
16:04:29 2 as
16:04:29 3 strSQL varchar2(2000);
16:04:29 4 begin
16:04:29 5 strSQL := 'create or replace view ' || strName || ' as select data';
16:04:29 6 for c in (select id,name from B order by 1) loop
16:04:29 7 strSQL := strSQL || ',max(decode(b_id,'|| c.id ||',value)) "' || c.name || '"';
16:04:29 8 end loop;
16:04:29 9 strSQL := strSQL || ' from A group by data';
16:04:29 10 execute immediate strSQL;
16:04:29 11 end;
16:04:29 12 /
过程已创建。
已用时间: 00: 00: 00.01
16:04:30 scott@TUNGKONG> exec pro_test('view_test');
PL/SQL 过程已成功完成。
已用时间: 00: 00: 00.00
16:04:38 scott@TUNGKONG> select * from view_test;
DATA 一 二
---------- --- ---
200910 a b
200909 c d
已用时间: 00: 00: 00.01create or replace procedure pro_test(strName varchar2)
as
strSQL varchar2(2000);
begin
strSQL := 'create or replace view ' || strName || ' as select data';
for c in (select id,name from B order by 1) loop
strSQL := strSQL || ',max(decode(b_id,'|| c.id ||',value)) "' || c.name || '"';
end loop;
strSQL := strSQL || ' from A group by data';
execute immediate strSQL;
end;
/select data,max(decode(b_id,1,value)) 一,max(decode(b_id,2,value)) 二 from A group by data;