我正尝试将此update语句添加到前面有几个insert语句的存储过程中。当我尝试编译时,我得到了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;如果任何人需要的话,我可以提供(如果需要)整个存储过程。
非常感谢,一如既往:)
马库斯
发布于 2012-11-28 00:52:04
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;https://stackoverflow.com/questions/13588869
复制相似问题