0

この更新ステートメントを、その前にいくつかの挿入ステートメントがあるストアドプロシージャに追加しようとしています。コンパイルしようとするとORA-00933が発生しますが、問題は発生しません。私はSQLServerに慣れていると言うので、これが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;

必要に応じて、(必要に応じて)ストアドプロシージャ全体を提供できます。

いつものように感謝します:)

マーカス

4

1 に答える 1

1

Oracleは、SQLServerがサポートするUPDATE... FROM構成をサポートしていません。代わりにMERGEステートメントを使用する必要があります。次のようになります。

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;
于 2012-11-27T16:52:03.973 に答える