A表:
CREATE TABLE T_CB (
F_BH  NCHAR(16) NOT NULL, 
F_CAMC  NVARCHAR2(100), 
F_CAYJ  NVARCHAR2(200), 
F_SHZT NCHAR(1) DEFAULT 2, 
F_LRSJ  DATE NOT NULL,
CONSTRAINT PK_CB PRIMARY KEY(F_BH) 
    USING INDEX TABLESPACE BMRSINDEX )  
    TABLESPACE BMRSTXT INITRANS 2 MAXTRANS 25 STORAGE( FREELISTS 5 FREELIST GROUPS 10);
B表:
CREATE TABLE T_CTPB(
F_BH  NCHAR(16) NOT NULL, 
F_ABH  NVARCHAR2(16) NOT NULL, 
F_TPBH  NVARCHAR2(18) NOT NULL, 
F_RDZT  NUMBER(1), 
CONSTRAINT FK_CTPB_CB FOREIGN KEY(F_BH) 
    REFERENCES T_CB(F_BH),
    CONSTRAINT PK_CTPB PRIMARY KEY(F_BH, F_TPBH)
    USING INDEX TABLESPACE BMRSINDEX ) 
TABLESPACE BMRSTXT INITRANS 2 MAXTRANS 25 STORAGE( FREELISTS 5 FREELIST GROUPS 10);问题:update t_cb set f_shzt = '1' where F_BH in ('2102212006110002','2102212006110003')  结果:已更新 1 行。
select f_bh from t_cb  where F_BH in ('2102212006110002','2102212006110003');
结果:F_BH
--------------------------------
2102212006110002
请问为什么每次只执行了1句,还不是2句十分感谢!!!

解决方案 »

  1.   

    南极飘学  你没有看仔细;
    update 和select 是2个问题 
    update 希望返回的结果是:已更新 2行
    select 返回的结果应该是:
    结果:F_BH
    --------------------------------
    2102212006110002
    2102212006110003
      

  2.   

    这个问题解决了是 oracle nchar bug 现在我只知道是bug
    也有解决方法
    update t_cb set f_shzt = '1' where F_BH in ('2102212006110002','2102212006110003 ')
    注意在'2102212006110003 '+一个空格 就能显示更新2条记录但现在不知道是什么情况下能产生这个bug  
    oracle版本9.1i