【问题标题】:Update fails to compile stored procedure更新无法编译存储过程
【发布时间】:2012-11-28 00:52:03
【问题描述】:

我正在尝试将此更新语句添加到前面有几个插入语句的存储过程中。我在尝试编译时收到 ORA-00933,但没有发现任何问题。我会说我习惯了 SQL Server,如果这在翻译到 Oracle 方面有些愚蠢,请原谅我。

UPDATE
  APEX_QC_TLINK_AGENTS
SET
  I_FK_TLINK_TEAM = SHG_DATAW.APEX_QC_TLINK_TEAMS.I_SK_TLINK_TEAM
FROM
  SHG_DATAW.APEX_QC_TLINK_AGENTS
LEFT JOIN
  CMS_W_AGENT_DETAILS@SHG_SPECIALIST
  ON
    SHG_DATAW.APEX_QC_TLINK_AGENTS.A_FORENAME = CMS_W_AGENT_DETAILS.FIRST_NAME
    AND
    SHG_DATAW.APEX_QC_TLINK_AGENTS.A_SURNAME = CMS_W_AGENT_DETAILS.LAST_NAME
LEFT JOIN
  SHG_DATAW.APEX_QC_TLINK_TEAMS
  ON 
    CMS_W_AGENT_DETAILS.TEAM_NAME = SHG_DATAW.APEX_QC_TLINK_TEAMS.A_TEAMNAME
WHERE
  SHG_DATAW.APEX_QC_TLINK_TEAMS.I_SK_TLINK_TEAM <> APEX_QC_TLINK_AGENTS.I_FK_TEAM;

如果有人需要,我可以提供(如果需要)整个存储过程。

非常感谢一如既往:)

马库斯

【问题讨论】:

    标签: sql oracle plsql oracle11g


    【解决方案1】:

    Oracle 不支持 SQL Server 支持的 UPDATE... FROM 构造。您应该改用MERGE statement。它应该是这样的:

    MERGE INTO APEX_QC_TLINK_AGENTS A
    USING
    (
    SELECT SHG_DATAW.APEX_QC_TLINK_TEAMS.I_SK_TLINK_TEAM
    FROM
      SHG_DATAW.APEX_QC_TLINK_AGENTS
    LEFT JOIN
      CMS_W_AGENT_DETAILS@SHG_SPECIALIST
      ON
        SHG_DATAW.APEX_QC_TLINK_AGENTS.A_FORENAME = CMS_W_AGENT_DETAILS.FIRST_NAME
        AND
        SHG_DATAW.APEX_QC_TLINK_AGENTS.A_SURNAME = CMS_W_AGENT_DETAILS.LAST_NAME
    LEFT JOIN
      SHG_DATAW.APEX_QC_TLINK_TEAMS
      ON 
        CMS_W_AGENT_DETAILS.TEAM_NAME = SHG_DATAW.APEX_QC_TLINK_TEAMS.A_TEAMNAME
    
    ) B
    ON (B.I_SK_TLINK_TEAM <> A.I_FK_TEAM)
    WHEN MATCHED THEN
    UPDATE SET A.I_FK_TLINK_TEAM = B.I_SK_TLINK_TEAM;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-05-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多