UPDATE "POSDA"@PCSRV1 SET TRANS_FLG = 'Y' ,"TRANS_NO" = 'T20090302000032'
WHERE EXISTS
(SELECT 1 FROM POSDA_TMP WHERE POSDA.SHOP=POSDA_TMP.SHOP
AND POSDA.MACH=POSDA_TMP.MACH
AND POSDA."DATE"=POSDA_TMP.DATE_tmp
AND POSDA.TRNO = POSDA_TMP.TRNO) and TRNO LIKE '00%'
/*数据比较少 */
和
UPDATE "POSDA"@PCSRV1 SET TRANS_FLG = 'Y' ,"TRANS_NO" = 'T20090302000032'
WHERE EXISTS
(SELECT 1 FROM POSDA_TMP WHERE POSDA.SHOP=POSDA_TMP.SHOP
AND POSDA.MACH=POSDA_TMP.MACH
AND POSDA."DATE"=POSDA_TMP.DATE_tmp
AND POSDA.TRNO = POSDA_TMP.TRNO) and TRNO LIKE '0%'
/*数据比较多 */
这2个update语句,第一个可以执行,第二个不可以执行.
把update换做delete 条件不变 结果也是一样的.
给我的感觉是因为第二种数据比较多,又是通过dblink(oracle-sqlserver通过getway)的,所以速度比较慢 是不是有什么地方设置了最大链接时间的呢?
WHERE EXISTS
(SELECT 1 FROM POSDA_TMP WHERE POSDA.SHOP=POSDA_TMP.SHOP
AND POSDA.MACH=POSDA_TMP.MACH
AND POSDA."DATE"=POSDA_TMP.DATE_tmp
AND POSDA.TRNO = POSDA_TMP.TRNO) and TRNO LIKE '00%'
/*数据比较少 */
和
UPDATE "POSDA"@PCSRV1 SET TRANS_FLG = 'Y' ,"TRANS_NO" = 'T20090302000032'
WHERE EXISTS
(SELECT 1 FROM POSDA_TMP WHERE POSDA.SHOP=POSDA_TMP.SHOP
AND POSDA.MACH=POSDA_TMP.MACH
AND POSDA."DATE"=POSDA_TMP.DATE_tmp
AND POSDA.TRNO = POSDA_TMP.TRNO) and TRNO LIKE '0%'
/*数据比较多 */
这2个update语句,第一个可以执行,第二个不可以执行.
把update换做delete 条件不变 结果也是一样的.
给我的感觉是因为第二种数据比较多,又是通过dblink(oracle-sqlserver通过getway)的,所以速度比较慢 是不是有什么地方设置了最大链接时间的呢?
[Transparent gateway for MSSQL][A00A] Execute query failed, datasource is 'testserver', SQL text is 'UPDATE "POSDA" A1 SET "TRANS_FLG" = 'Y' WHERE EXISTS (SELECT 1 FROM ORACLE:"POSDA_TMP" A2 WHERE A1."SHOP"=A2."SHOP" AND A1."MACH"=A2."MACH" AND A1."DATE"=A2."DATE_TMP" AND A1."TRNO"=A2."TRNO") AND (A1."TRNO" LIKE '0%' OR A1."TRNO"='12000' OR A1."TRNO"='11999')'
ORA-02063: preceding 2 lines from PCSRV1
回滚段不够大应该不可能,因为我不加任何where条件是可以执行的!
来?
数据类型没有问题,不加where条件是可以执行的!