UPDATE T_DWJBXX T_DWJBXX
SET T_DWJBXX.TBSDM=SBFV.TBSDM,T_DWJBXX.SBBM=SBFV.SBBM,T_DWJBXX.SSQ=SBFV.SSQ,T_DWJBXX.DWMC=SBFV.DWMC,
T_DWJBXX.DWXZ=SBFV.DWXZ,T_DWJBXX.YB=SBFV.YB,T_DWJBXX.DWDZ=SBFV.DWDZ,T_DWJBXX.LXR=SBFV.LXR,
T_DWJBXX.LXDH=SBFV.LXDH,T_DWJBXX.SWDJZH=SBFV.SWDJZH,T_DWJBXX.JGDM=SBFV.JGDM,T_DWJBXX.JFZT=SBFV.JFZT,
T_DWJBXX.GRSF=SBFV.GRSF,T_DWJBXX.CBDWBM=SBFV.CBDWBM,T_DWJBXX.CBDWMC=SBFV.CBDWMC,T_DWJBXX.ZJLX=SBFV.ZJLX,
T_DWJBXX.ZJHM=SBFV.ZJHM,T_DWJBXX.XJHM=SBFV.XJHM,T_DWJBXX.JFYH=SBFV.JFYH,T_DWJBXX.YHHH=SBFV.YHHH,
T_DWJBXX.KHYH=SBFV.KHYH,T_DWJBXX.YHZH=SBFV.YHZH,T_DWJBXX.YHHM=SBFV.YHHM
FROM SBF.V_DWJBXX_OTHER_PY@DBLink1 SBFV WHERE T_DWJBXX.TBSDM=SBFV.TBSDM AND T_DWJBXX.SBBM=SBFV.SBBM;
INSERT INTO
T_DWJBXX(TBSDM,SBBM,SSQ,DWMC,DWXZ,YB,DWDZ,LXR,LXDH,SWDJZH,JGDM,LRRQ,JFZT,GRSF,CBDWBM,CBDWMC,ZJLX,ZJHM,XJHM,JFYH,YHHH,KHYH,YHZH,YHHM)
SELECT
TBSDM,SBBM,SSQ,DWMC,DWXZ,YB,DWDZ,LXR,LXDH,SWDJZH,JGDM,LRRQ,JFZT,GRSF,CBDWBM,CBDWMC,ZJLX,ZJHM,XJHM,JFYH,YHHH,KHYH,YHZH,YHHM
FROM
SBF.V_DWJBXX_OTHER_PY@DBLink1 SBFV WHERE T_DWJBXX.SBBM<>SBFV.SBMM AND T_DWJBXX.TBSDM<>SBFV.TBSDM执行通不过,UPDATE 出现命令末正确结束
INSERT 出现无效的T_DWJBXX.SBBM
解决方案 »
- DEFAULT TABLESPACE Clause和TEMPORARY TABLESPACE Clause
- 关于UPDATE的问题
- Oracle是英文的,怎样找汉话包并按到Oracle10G中?
- 怎样更改PLSQL Developer工具的字符集
- 只要给解决,要多少给多少
- 如何用程序提交变量"&"
- 怎样彻底删除数据库?
- 怎样验证sql语句的正确性(只是语法检查,不执行)
- oracle8i中有毫秒吗?oracle9i中timestamp是带毫秒的,那8i中怎么表示毫秒呢?谢谢
- 在配置EPM System Configurator时IIS的问题
- 关于过程的问题
- 请各位高手推荐一款ORACLE自动备份的软件
set
from这个格式不对吧,不能用from
我oracle不熟
update T_DWJBXX T
set (col1,col2,col3...coln)=
(select col1,col2,col3...coln from tab1 where id=T.id)至于insert那里的问题
你检查下这个字段SBBM
SET (TBSDM,SBBM,SSQ,DWMC,DWXZ,YB,DWDZ,LXR,LXDH,SWDJZH,JGDM,LRRQ,JFZT,GRSF,CBDWBM,CBDWMC,ZJLX,ZJHM,XJHM,JFYH,YHHH,KHYH,YHZH,YHHM)=
(select TBSDM,SBBM,SSQ,DWMC,DWXZ,YB,DWDZ,LXR,LXDH,SWDJZH,JGDM,LRRQ,JFZT,GRSF,CBDWBM,CBDWMC,ZJLX,ZJHM,XJHM,JFYH,YHHH,KHYH,YHZH,YHHM
from SBF.V_DWJBXX_OTHER_PY@DBLink1 SBFV WHERE TBSDM=T_DWJBXX.TBSDM AND SBBM=T_DWJBXX.SBBM)
最后一行这里
SBMM是不是写错了
insert 那句你的语法也不对
这么写
INSERT INTO
T_DWJBXX(TBSDM,SBBM,SSQ,DWMC,DWXZ,YB,DWDZ,LXR,LXDH,SWDJZH,JGDM,LRRQ,JFZT,GRSF,CBDWBM,CBDWMC,ZJLX,ZJHM,XJHM,JFYH,YHHH,KHYH,YHZH,YHHM)
SELECT
TBSDM,SBBM,SSQ,DWMC,DWXZ,YB,DWDZ,LXR,LXDH,SWDJZH,JGDM,LRRQ,JFZT,GRSF,CBDWBM,CBDWMC,ZJLX,ZJHM,XJHM,JFYH,YHHH,KHYH,YHZH,YHHM
FROM
SBF.V_DWJBXX_OTHER_PY@DBLink1 SBFV
WHERE not exists(select 1 from t_dwjbxx where SBBM=SBFV.SBMM or TBSDM=SBFV.TBSDM)
--100859 原数据库有记录数
--101612 用了INSERT之后的更新记录数
--148899 服务器的数据记录数
只更新了753条记录?
T_DWJBXX.TBSDM=SBFV.TBSDM AND T_DWJBXX.SBBM=SBFV.SBBM;
满足这个条件的更新,不满足的都要insert 是吗?
如果是这样
你的insert 条件就不能设成T_DWJBXX.TBSDM<>SBFV.TBSDM AND T_DWJBXX.SBBM<>SBFV.SBBM;
这么改INSERT INTO
T_DWJBXX(TBSDM,SBBM,SSQ,DWMC,DWXZ,YB,DWDZ,LXR,LXDH,SWDJZH,JGDM,LRRQ,JFZT,GRSF,CBDWBM,CBDWMC,ZJLX,ZJHM,XJHM,JFYH,YHHH,KHYH,YHZH,YHHM)
SELECT
TBSDM,SBBM,SSQ,DWMC,DWXZ,YB,DWDZ,LXR,LXDH,SWDJZH,JGDM,LRRQ,JFZT,GRSF,CBDWBM,CBDWMC,ZJLX,ZJHM,XJHM,JFYH,YHHH,KHYH,YHZH,YHHM
FROM
SBF.V_DWJBXX_OTHER_PY@DBLink1 SBFV
WHERE exists(select 1 from t_dwjbxx where SBBM<>SBFV.SBMM or TBSDM<>SBFV.TBSDM)
是
INSERT INTO
T_DWJBXX(TBSDM,SBBM,SSQ,DWMC,DWXZ,YB,DWDZ,LXR,LXDH,SWDJZH,JGDM,LRRQ,JFZT,GRSF,CBDWBM,CBDWMC,ZJLX,ZJHM,XJHM,JFYH,YHHH,KHYH,YHZH,YHHM)
SELECT
TBSDM,SBBM,SSQ,DWMC,DWXZ,YB,DWDZ,LXR,LXDH,SWDJZH,JGDM,LRRQ,JFZT,GRSF,CBDWBM,CBDWMC,ZJLX,ZJHM,XJHM,JFYH,YHHH,KHYH,YHZH,YHHM
FROM
SBF.V_DWJBXX_OTHER_PY@DBLink1 SBFV
WHERE not exists(select 1 from t_dwjbxx where SBBM=SBFV.SBBM and TBSDM=SBFV.TBSDM)
7楼的插入行数太少,可能是因为,你的条件要T_DWJBXX.SBBM<>SBFV.SBMM AND T_DWJBXX.TBSDM<>SBFV.TBSDM
两个同时满足才插入
我把not exists里的条件改了下,or 改成and
只要不满足其一就插入
没理由0行被插入
把not exists 后面括号的where 后or改成and 就好
using SBF.V_DWJBXX_OTHER_PY@DBLink1 SBFV
on (T_DWJBXX.TBSDM=SBFV.TBSDM AND T_DWJBXX.SBBM=SBFV.SBBM)
when matched then
update
set T_DWJBXX.TBSDM=SBFV.TBSDM,T_DWJBXX.SBBM=SBFV.SBBM,T_DWJBXX.SSQ=SBFV.SSQ,T_DWJBXX.DWMC=SBFV.DWMC,
T_DWJBXX.DWXZ=SBFV.DWXZ,T_DWJBXX.YB=SBFV.YB,T_DWJBXX.DWDZ=SBFV.DWDZ,T_DWJBXX.LXR=SBFV.LXR,
T_DWJBXX.LXDH=SBFV.LXDH,T_DWJBXX.SWDJZH=SBFV.SWDJZH,T_DWJBXX.JGDM=SBFV.JGDM,T_DWJBXX.JFZT=SBFV.JFZT,
T_DWJBXX.GRSF=SBFV.GRSF,T_DWJBXX.CBDWBM=SBFV.CBDWBM,T_DWJBXX.CBDWMC=SBFV.CBDWMC,T_DWJBXX.ZJLX=SBFV.ZJLX,
T_DWJBXX.ZJHM=SBFV.ZJHM,T_DWJBXX.XJHM=SBFV.XJHM,T_DWJBXX.JFYH=SBFV.JFYH,T_DWJBXX.YHHH=SBFV.YHHH,
T_DWJBXX.KHYH=SBFV.KHYH,T_DWJBXX.YHZH=SBFV.YHZH,T_DWJBXX.YHHM=SBFV.YHHM when not matched then
insert
(T_DWJBXX.TBSDM,T_DWJBXX.SBBM,T_DWJBXX.SSQ,T_DWJBXX.DWMC,T_DWJBXX.DWXZ,T_DWJBXX.YB,T_DWJBXX.DWDZ,T_DWJBXX.LXR,T_DWJBXX.LXDH,T_DWJBXX.SWDJZH,T_DWJBXX.JGDM,T_DWJBXX.LRRQ,T_DWJBXX.JFZT,T_DWJBXX.GRSF,T_DWJBXX.CBDWBM,T_DWJBXX.CBDWMC,T_DWJBXX.ZJLX,T_DWJBXX.ZJHM,T_DWJBXX.XJHM,T_DWJBXX.JFYH,T_DWJBXX.YHHH,T_DWJBXX.KHYH,T_DWJBXX.YHZH,T_DWJBXX.YHHM)
values
(SBFV.TBSDM,SBFV.SBBM,SBFV.SSQ,SBFV.DWMC,SBFV.DWXZ,SBFV.YB,SBFV.DWDZ,SBFV.LXR,SBFV.LXDH,SBFV.SWDJZH,SBFV.JGDM,SBFV.LRRQ,SBFV.JFZT,SBFV.GRSF,SBFV.CBDWBM,SBFV.CBDWMC,SBFV.ZJLX,SBFV.ZJHM,SBFV.XJHM,SBFV.JFYH,SBFV.YHHH,SBFV.KHYH,SBFV.YHZH,SBFV.YHHM);
问题解决了
你是热心的人