1
1楼 zfrandzfr 2007-10-12 10:53:10 问题收集日期:2007-10-12 测试用例 create table A1 ( A VARCHAR2(20), B NUMBER(20,2) ); create table A2 ( A VARCHAR2(20), B NUMBER(20,2), C NUMBER(20,2) ); insert into A1 (A, B) values ('a', 12); insert into A1 (A, B) values ('v', 121); insert into A1 (A, B) values ('d', 22); 说明:以A1来处理A2。 ------没有子查询的变量的应用 declare v1 varchar2(20); v2 varchar2(20); v3 number(20,2); v4 number(20,2); begin v1:='a'; v2:='v'; v3:=1090; v4:=8888; merge into a2 using a1 tt on (a2.a=tt.a ) when matched then update set c=v3 when not matched then insert (a,b,c) values(tt.a,tt.b,v4); end; -------子查询的情况 变量的应用 declare v1 varchar2(20); v2 varchar2(20); v3 number(20,2); v4 number(20,2); begin v1:='a'; v2:='v'; v3:=1090; v4:=8888; merge into a2 using (select a,b,v4 as c,v3 as d from a1 where a1.a= v1 or a1.a=v2) tt on (a2.a=tt.a ) when matched then update set c=tt.d when not matched then insert (a,b,c) values(tt.a,tt.b,tt.c); end; 为什么以下这么用不可以呢? declare v1 varchar2(20); v2 varchar2(20); v3 number(20,2); v4 number(20,2); begin v1:='a'; v2:='v'; v3:=1090; v4:=8888; merge into a2 using (select a,b, from a1 where a1.a= v1 or a1.a=v2) tt on (a2.a=tt.a ) when matched then update set c=v3 when not matched then insert (a,b,c) values(tt.a,tt.b,v4); end; 2楼 zfrandzfr 2007-10-15 12:40:41 ? 3楼 kinglht 2007-10-15 15:35:50 using (select a,b, from a1 where a1.a= v1 or a1.a=v2) tt 多了个,号 4楼 fxianxian 2007-10-16 17:23:44 它跳什么?的??啊?
搜索墙@2009 www.pkwall.com all rights reserved QQ:276471788 [京ICP备09111534号]
声明:本站部分数据来源于网络,仅供参考,如有版权问题,请联系我们,我们将及时删除!转载本站请注明来源
| |||||