Oracle Databaseのアップグレード後のSQL*PlusスクリプトおよびPL/SQLのアップグレード

新しいOracle Databaseリリースの機能およびファンクションを使用するには、新しいOracle Databaseリリースの構文を使用するように既存のSQLスクリプトを変更する必要があります。

既存のSQLスクリプトで新しいOracle Databaseリリースの機能およびファンクションを使用しない場合、それらは新しいOracle Databaseリリースで変更されずに実行されるため、変更は不要です。

新しいOracle Databaseリリースではエラー確認機能が強化されているため、実行時ではなくコンパイル時にエラーを識別できる場合があります。

数値リテラルの評価

リテラルを使用する数値計算の場合は、1つ以上の定数で小数第1位に小数点を指定する必要があります。

Oracle Database 10gリリース1 (10.1)以上のすべてのOracle Databaseリリースでは、一部の式でINTEGER演算(有効桁数は約9桁)が使用されるため、この要件が必要になります。Oracle9iリリース2 (9.2)では、NUMBER演算(有効桁数は約38桁)が使用されていました。有効桁数が9桁を超えるリテラルが計算結果に含まれる場合、数値オーバーフローのエラーを回避するには、1つのリテラルが小数形式であることが必要です。たとえば、Oracle Database 10g以上のリリースでは、次に示す例のv1の計算で数値オーバーフローのエラーが発生します。

DECLARE
  v1 NUMBER(38);
BEGIN
  v1 := 256*256*256*256;
  DBMS_OUTPUT.PUT_LINE(v1);
END;
/

このエラーに対する解決策として、1つの数値リテラルを次のように小数(256.0)として指定します。

DECLARE
  v1 NUMBER(38);
BEGIN
  v1 := 256*256*256*256.0;
  DBMS_OUTPUT.PUT_LINE(v1);
END;
/

参照:

SQL*Plusおよび数値リテラルの要件の詳細は、『SQL*Plusユーザーズ・ガイドおよびリファレンス』を参照してください