搜索墙首页  编程技术  java  asp  ajax  php  c/c#/c++  数据库  oracle  mysql  db2  操作系统  windows  linux  股吧
首页 > 编程 > 数据库 > oracle
 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

它跳什么?的??啊?
 1         
您的发言将按有关规定都会存档,您须为所发表后果负责,请您遵纪守法并注意语言文明。
标题:ORACLE MERGER 的应有和问题
热门关注
标题回复点击
Oracle 10g (ASM):Sample Implementation0816
Oracle 正版用户授权0781
动态性能视图(Dynamic perfermance view V$)0770
EM 无法启动&&重新完全配置EM0637
OracleDBConsole 服务因 2 (0x2) 服务性错误而停止。请问一下如何解决!2466
小布老师Oracle 9i DBA Fundamentals II0408
ORA-1652: unable to extend temp segment诊断以及解决0391
Oracle Linux 和 iSCSI 上构建您自己的 Oracle RAC集群10381
locate pl/sql bottleneck0346
缓冲处理器 buffer handle0341
搜索墙@2009 www.pkwall.com all rights reserved QQ:276471788 [京ICP备09111534号]
声明:本站部分数据来源于网络,仅供参考,如有版权问题,请联系我们,我们将及时删除!转载本站请注明来源