Oracle在子查询中未显示错误

孙雷欧

在Oracle中,为什么在更新语句时不反映子查询问题。此查询运行时没有任何异常或错误。

update rdt_order set recepientcode ='szdwyes',
vendornad = (select contactnad from rdt_organization where oucode ='szdwyes')

在此,作为单独查询运行时,contactnad无效标识符问题出现。

(select contactnad from rdt_organization where oucode ='szdwyes')

请帮助我了解为什么会发生这种情况。

表说明:

SQL> desc rdt_organization;
Name            Type          Nullable Default Comments 
--------------- ------------- -------- ------- -------- 
ID              INTEGER                                 
PARENTID        INTEGER       Y                         
HEADUSERID      INTEGER       Y                         
DUNS            VARCHAR2(32)  Y                         
ORGTYPE         INTEGER       Y                         
OUCODE          VARCHAR2(32)  Y                         
FUCODE          VARCHAR2(32)  Y                         
ORGNAME         VARCHAR2(32)  Y                         
LONGNAME        VARCHAR2(256) Y                         
COMPREGNUM      VARCHAR2(64)  Y                         
TAXREFNUM       VARCHAR2(64)  Y                         
GROUPNAME       VARCHAR2(32)  Y                         
ACTIVATIONDATE  DATE          Y                         
EXPIRYDATE      DATE          Y                         
REGDATE         DATE          Y                         
STATUS          INTEGER       Y                         
CONTACTNADID    INTEGER       Y                         
LASTUPDATEDATE  DATE          Y                         
LASTUPDATEDBY   VARCHAR2(15)  Y                         
DEFAULTTIMEZONE VARCHAR2(16)  Y                         
DEFAULTLANGUAGE INTEGER       Y                         
DEFAULTCURRENCY INTEGER       Y                         
COMPANYNAME     VARCHAR2(256) Y                         
LASTUPDATEIP    VARCHAR2(32)  Y                         
UNITNAME        VARCHAR2(256) Y                         
TURNOVER        NUMBER(22,6)  Y                         
NOOFEMPLOYEES   INTEGER       Y                         
CONTROLLER      INTEGER       Y                         

SQL> desc rdt_order;
Name               Type          Nullable Default Comments 
------------------ ------------- -------- ------- -------- 
ID                 INTEGER                                 
TRANSID            INTEGER       Y                         
CONTROLLERID       INTEGER                                 
ORGTRANSREF        VARCHAR2(128) Y                         
DOCNUM             VARCHAR2(128) Y                         
BARCODENUM         VARCHAR2(128) Y                         
REFNUM             VARCHAR2(128) Y                         
SUBTYPE            VARCHAR2(32)  Y                         
GENDATE            DATE          Y                         
STATUS             INTEGER       Y                         
ISSUEDATE          DATE          Y                         
CANCELDATE         DATE          Y                         
REVISIONDATE       DATE          Y                         
REVISIONNUM        VARCHAR2(6)   Y                         
BATCHNUM           VARCHAR2(128) Y                         
ORGINATORCODE      VARCHAR2(32)  Y                         
APPROVERCODE       VARCHAR2(32)  Y                         
APPROVERUSER       INTEGER       Y                         
ORGINATORUSER      VARCHAR2(32)  Y                         
SENDERMAILBOXID    VARCHAR2(64)  Y                         
RECEPIENTMAILBOXID VARCHAR2(64)  Y                         
RECEPIENTCODE      VARCHAR2(32)  Y                         
REMARKS1           VARCHAR2(256) Y                         
REMARKS2           VARCHAR2(256) Y                         
INTERNALNOTE       VARCHAR2(256) Y                         
TERMSCOND          BLOB          Y                         
WFCODE             VARCHAR2(32)  Y                         
ORIGINATORDUNS     VARCHAR2(32)  Y                         
RECEPIENTDUNS      VARCHAR2(32)  Y                         
SHIPTOPLANTCODE    VARCHAR2(32)  Y                         
ORDERBYPLANTCODE   VARCHAR2(32)  Y                         
CUSTOMERCODE       VARCHAR2(32)  Y                         
CUSTOMERNAD        INTEGER       Y                         
BUDGETCODE         VARCHAR2(32)  Y                         
ACCOUNTCODE        VARCHAR2(32)  Y                         
CONTRACTCODE       VARCHAR2(32)  Y                         
MODEL              VARCHAR2(128) Y                         
SHIPPERCODE        VARCHAR2(32)  Y                         
VENDORCODE         VARCHAR2(32)  Y                         
WHCODE             VARCHAR2(32)  Y                         
FWCODE             VARCHAR2(32)  Y                         
TRAFFICCODE        VARCHAR2(32)  Y                         
TARRIFCODE         VARCHAR2(32)  Y                         
FININSTCODE        VARCHAR2(32)  Y                         
CUSTOMSCODE        VARCHAR2(32)  Y                         
PURCHASEGROUP      VARCHAR2(128) Y                         
MSGFUNCTIONCODE    VARCHAR2(64)  Y                         
BUYERCODE          VARCHAR2(32)  Y                         
SHIPTOLOCATION     VARCHAR2(64)  Y                         
BILLTOCODE         VARCHAR2(32)  Y                         
FUNDCODE           VARCHAR2(32)  Y                         
CONSIGNEECODE      VARCHAR2(32)  Y                         
CONTACTCODE        VARCHAR2(32)  Y                         
CONTACTNAD         INTEGER       Y                         
FUNDNAD            INTEGER       Y                         
CONSIGNEENAD       INTEGER       Y                         
ACCOUNTNAD         INTEGER       Y                         
PROJECTNAD         INTEGER       Y                         
CONTRACTNAD        INTEGER       Y                         
SHIPPERNAD         INTEGER       Y                         
VENDORNAD          INTEGER       Y                         
WHNAD              INTEGER       Y                         
FWNAD              INTEGER       Y                         
TRAFFICNAD         INTEGER       Y                         
TARRIFNAD          INTEGER       Y                         
FININSTNAD         INTEGER       Y                         
CUSTOMSNAD         INTEGER       Y                         
BUYERNAD           INTEGER       Y                         
SHIPTOLOCATIONNAD  INTEGER       Y                         
BILLTONAD          INTEGER       Y                         
PROJECTCODE        VARCHAR2(32)  Y                         
CURRENCYCODE       INTEGER       Y                         
SUBPROJECTCODE     VARCHAR2(32)  Y                         
COSTCENTRE         VARCHAR2(64)  Y                         
TOTALAMOUNT        NUMBER(22,6)  Y                         
TOTALITEMS         INTEGER       Y                         
CLASSIFICATION1    VARCHAR2(256) Y                         
CLASSIFICATION2    VARCHAR2(256) Y                         
CLASSIFICATION3    VARCHAR2(256) Y                         
FRIEGHT            VARCHAR2(128) Y                         
PAYMENTTERM1       VARCHAR2(256) Y                         
PAYMENTTERM2       VARCHAR2(256) Y                         
PRICETERM2         VARCHAR2(256) Y                         
PRICETERM1         VARCHAR2(256) Y                         
SHIPMENTTERM1      VARCHAR2(256) Y                         
SHIPMENTTERM2      VARCHAR2(256) Y                         
INSURANCE1         VARCHAR2(256) Y                         
INSURANCE2         VARCHAR2(256) Y                         
SHIPMENTMODE       VARCHAR2(32)  Y                         
VALIDFROM          DATE          Y                         
VALIDTO            DATE          Y                         
ACTIONSTATUS       INTEGER       Y                         
LATEST             INTEGER       Y                         
LASTUPDATEBY       VARCHAR2(15)  Y                         
LASTUPDATE         DATE          Y                         
LASTUPDATESTKHID   INTEGER       Y                         
CREATEDBY          INTEGER       Y                         
BEHALFOF           INTEGER       Y                         
PROCESSDEFID       INTEGER       Y                         
PROCESSID          INTEGER       Y                         
CLOSED             INTEGER       Y                         
APPREVNUM          VARCHAR2(256) Y                         
APPREVDATE         DATE          Y                         
XTRACODE1          VARCHAR2(256) Y                         
XTRACODE2          VARCHAR2(32)  Y                         
XTRACODE3          VARCHAR2(32)  Y                         
XTRACODE4          VARCHAR2(32)  Y                         
XTRACODE5          VARCHAR2(32)  Y                         
XTRASTRING1        VARCHAR2(128) Y                         
XTRASTRING2        VARCHAR2(128) Y                         
XTRASTRING3        VARCHAR2(128) Y                         
XTRASTRING4        VARCHAR2(128) Y                         
XTRASTRING5        VARCHAR2(128) Y                         
XTRABIGSTRING1     VARCHAR2(256) Y                         
XTRABIGSTRING2     VARCHAR2(256) Y                         
XTRABIGSTRING3     VARCHAR2(256) Y                         
XTRABIGSTRING4     VARCHAR2(256) Y                         
XTRABLOB1          BLOB          Y                         
XTRABLOB2          BLOB          Y                         
XTRABLOB3          BLOB          Y                         
XTRANUM1           NUMBER        Y                         
XTRANUM2           NUMBER        Y                         
XTRANUM3           NUMBER        Y                         
XTRANUM4           NUMBER        Y                         
XTRANUM5           NUMBER        Y                         
XTRAINT1           INTEGER       Y                         
XTRAINT2           INTEGER       Y                         
XTRAINT3           INTEGER       Y                         
XTRAINT4           INTEGER       Y                         
XTRAINT5           INTEGER       Y                         
XTRDATE1           DATE          Y                         
XTRDATE2           DATE          Y                         
XTRDATE3           DATE          Y                         

SQL> 
a_horse_with_no_name

这可以按照SQL标准中的规定进行工作。任何子查询(隐式)都可以访问“外部”表中的所有列。如果在内部查询中未找到列,则将使用外部查询中的匹配列。

这在Oracle手册中有记录:http :
//docs.oracle.com/cd/E11882_01/server.112/e41084/queries007.htm#SQLRF52357

如果子查询中的列与包含语句中的列具有相同的名称,则必须在包含语句中对表列的任何引用加上表名或别名作为前缀

通常,强烈建议在查询使用多个表的情况下,始终对查询中的每个表使用表别名(并对所访问的每一列使用表别名)。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章