Oracle11gから12cへの移行の注意点


■ 目次

  1. 概要
  2. 外部結合演算子について
  3. 12c移行時の注意点

■ 概要

Oracleを11gから12cにアップデートする時に気をつける点を紹介します

SQL的な観点で1点つまずいたのでそれについて

Oracle勉強シリーズ

■ 外部結合演算子について

注意点の紹介をする前に事前知識として外部結合演算子について紹介する

Oracleには外部結合演算子(+)というものがある
例:左のテーブル (TABLE1) はすべて残して、右のテーブル (TABLE2) と外部結合したい場合 の SQL

SELECT t1.key1, t1.name1, t2.name2
FROM   table1 t1, table2 t2
WHERE  t1.key1 = t2.key2(+)

テーブルの結合キーに (+) をつけることで外部結合される

■ 12c移行時の注意点

基本的に11gのSQLでも12cでは使えるようだが全く問題がないようではなかった

OracleデータベースエラーコードORA-30563詳細
外部結合演算子を使う際に12cではORDER BY句の中で演算子は使えないみたいだった
使おうとすると「ORA-30563: ここでは外部結合演算子(+)は許可されていません」というエラーが出るので注意


2 Comments

  1. Sebastian said:

    初コメントです。

    外部結合演算子を使う際に12cではORDER BY句の中で演算子は使えないみたいだった
    使おうとすると「ORA-30563: ここでは外部結合演算子(+)は許可されていません」というエラーが出るので注意

    上記の文に対してですが、
    対策方法(oracle12Cでの外部結合をしたいとき)をお教え願います。

    また、外部結合以外にoracle12Cで非互換になったSQL文を発見しておりましたら、
    こちらもお教えください。

    2018年5月18日
    Reply
    • tomsato said:

      コメントありがとうございます。

      例えばですが、以下のSQLの場合ですと
      SELECT empno, ename, dname
      FROM emp, dept
      WHERE emp.deptno (+)= dept.deptno;

      こちらのように外部結合(OUTER JOIN区)を使うと同様の意味になりそうなのでお試しください。
      SELECT empno, ename, dname
      FROM dept
      LEFT OUTER JOIN emp
      ON dept.deptno = emp.deptno;

      > また、外部結合以外にoracle12Cで非互換になったSQL文を発見しておりましたら、こちらもお教えください
      今回12c対応する際に発見したのが今回の記事の内容になりますので他については正直わからないという返答になります。
      もし何か発見いたしましたらこちらのコメントにでも記載していただけると大変助かります!!

      2018年5月22日
      Reply

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です