ORA-01427:single-row subquery returns more than one row一个更新sql语句遇到的问题:
环境:数据库 DBA, 数据库 DBB,两个数据库做的DBLINK,数据表 TAA,TAB 位于数据库DBA,通过数据库DBB 可以访问,数据表 TBC 位于数据库 DBB,需要 从 TAA,TAB 更新 TBC 中的数据。
    1、在数据库 DBB 做一个视图 V_AB 查询  TAA,TAB 的数据
       CREATE VIEW V_AB AS 
       SELECT TAA.COL_CODE, TAA.COL_TYPE, SUM(TAB.COL_QTY) QTY_SUM
       FROM TAA, TAB 
       WHERE TAA.COL_CODE=TAB.COL_CODE
       GROUP BY TAA.COL_CODE, TAA.COL_TYPE       更新表 TBC 的数据
       UPDATE TBC SET QTY_SUM=
       (SELECT QTY_SUM
         FROM V_AB 
         WHERE TBC.COL_CODE=V_AB.COL_CODE AND TBC.COL_TYPE=V_AB.COL_TYPE
        )WHERE TBC.COL_CRTDATE='2010-05-27' 
                AND EXISTS (SELECT 1 FROM V_AB WHERE TBC.COL_CODE=V_AB.COL_CODE AND TBC.COL_TYPE=V_AB.COL_TYPE)
        执行出错:ORA-01427
      2、在数据库 DBB 做一个表 V_AB 查询  TAA,TAB 的数据
       CREATE TABLE V_AB AS 
       SELECT TAA.COL_CODE, TAA.COL_TYPE, SUM(TAB.COL_QTY) QTY_SUM
       FROM TAA, TAB 
       WHERE TAA.COL_CODE=TAB.COL_CODE
       GROUP BY TAA.COL_CODE, TAA.COL_TYPE       更新表 TBC 的数据
       UPDATE TBC SET QTY_SUM=
       (SELECT QTY_SUM
         FROM V_AB 
         WHERE TBC.COL_CODE=V_AB.COL_CODE AND TBC.COL_TYPE=V_AB.COL_TYPE
        )WHERE TBC.COL_CRTDATE='2010-05-27' 
                AND EXISTS (SELECT 1 FROM V_AB WHERE TBC.COL_CODE=V_AB.COL_CODE AND TBC.COL_TYPE=V_AB.COL_TYPE)
        执行成功。
说明:表TBC 的主键列:COL_CRTDATE,COL_CODE, COL_TYPE
对以上执行结果不解,不清楚通过视图更新的问题在哪里?
视图 V_AB 和 表 V_AB 的数据是一样,同样的更新语句,用表更新成功过,用视图更新出错。