パッケージ org.opengion.fukurou.db

# Enum Class DBFunctionName

java.lang.Object
java.lang.Enum<DBFunctionName>
org.opengion.fukurou.db.DBFunctionName

すべての実装されたインタフェース:
  `Serializable`, `Comparable<DBFunctionName>`, `Constable`

public enum DBFunctionName extends Enum<DBFunctionName>
各データベースに対応するenum名を返します。 主に、各データベースにおける関数名の差異を吸収するためのenumです。 本来は、互換性のあるファンクション以外、使用しないようにしましょう。 また、無ければ互換性パックなどで、ファンクションを定義してしまうのも 一つの方法です。

各データベースにおける関数
データベース名 | 連結 | 部分文字列 | 日付関数 | DUAL検索
--- | --- | --- | --- | ---
{@DBF.XXX} | CON | SUBSTR | SYSDATE | FROM_DUAL
ORACLE | || | SUBSTR | SYSDATE | FROM DUAL
HSQL | || | SUBSTR | CURRENT_TIMESTAMP | FROM DUAL
POSTGRES | || | SUBSTR | CURRENT_DATE |
MYSQL | || | SUBSTR | now() | FROM DUAL
SQLSERVER | + | SUBSTRING | GETDATE() |
FIREBIRD | || | SUBSTR | CURRENT_DATE | FROM RDB$DATABASE
DERBY | || | SUBSTR | CURRENT_TIMESTAMP | FROM SYSIBM.SYSDUMMY1
CACHE | || | SUBSTRING | SYSDATE | FROM DUAL
H2 | || | SUBSTR | SYSDATE | FROM DUAL
OTHER | || | SUBSTR | SYSDATE | FROM DUAL

※ MySQLでは、通常文字列連結は、CONCAT関数を使います。パイプ(||)で結合するには、 SET sql_mode='PIPES_AS_CONCAT' しておく必要があります。 JDBCで設定する場合は、jdbc:mysql://《サーバー》/《DB名》?sessionVariables=sql_mode='PIPES_AS_CONCAT' と指定します。

変更履歴:
  5.1.4.0 (2010/03/01) 新規作成, 5.8.5.0 (2015/03/06) CACHE追加, 8.0.1.1 (2021/11/12) FROM DUAL 項目追加
導入されたバージョン:
  JDK5.0,

- ## ネストされたクラスの概要

  ## クラスから継承されたネストされたクラス/インタフェース java.lang.Enum

  `Enum.EnumDesc<E extends Enum<E>>`

- ## 列挙型定数の概要

  列挙定数
  列挙型定数
  説明
  `CACHE`
  ファンクション名
  `DERBY`
  ファンクション名
  `FIREBIRD`
  ファンクション名
  `H2`
  ファンクション名
  `HSQL`
  ファンクション名
  `MYSQL`
  ファンクション名
  `ORACLE`
  ファンクション名
  `OTHER`
  ファンクション名
  `POSTGRES`
  ファンクション名
  `SQLSERVER`
  ファンクション名

- ## メソッドの概要

  修飾子とタイプ
  メソッド
  説明
  `static DBFunctionName`
  `getDBName(String dbName)`
  各データベースに対応するenum名を返します。
  `String`
  `getFunctionName(String func)`
  共通ファンクションに対応するデータベース個別のファンクション名を返します。
  `static String`
  `getFunctionName(String func, String dbid)`
  各データベースに対応するファンクション名を返します。
  `int`
  `getSequence(String seqName, Transaction tran)`
  シーケンス名よりシーケンスオブジェクトを検索し、次の値を取り出します。
  `int`
  `getSequence(String seqName, Transaction tran, String DBID)`
  シーケンス名よりシーケンスオブジェクトを検索し、次の値を取り出します。
  `static DBFunctionName`
  `valueOf(String name)`
  Returns the enum constant of this class with the specified name.
  `static DBFunctionName[]`
  `values()`
  Returns an array containing the constants of this enum class, in the order they are declared.

  ### クラスから継承されたメソッド java.lang.Enum

  `clone, compareTo, describeConstable, equals, finalize, getDeclaringClass, hashCode, name, ordinal, toString, valueOf`

  ### クラスから継承されたメソッド java.lang.Object

  `getClass, notify, notifyAll, wait, wait, wait`

- ## 列挙型定数の詳細

  - ### ORACLE

    public static final DBFunctionName ORACLE
    ファンクション名

  - ### HSQL

    public static final DBFunctionName HSQL
    ファンクション名

  - ### POSTGRES

    public static final DBFunctionName POSTGRES
    ファンクション名

  - ### MYSQL

    public static final DBFunctionName MYSQL
    ファンクション名

  - ### SQLSERVER

    public static final DBFunctionName SQLSERVER
    ファンクション名

  - ### FIREBIRD

    public static final DBFunctionName FIREBIRD
    ファンクション名

  - ### DERBY

    public static final DBFunctionName DERBY
    ファンクション名

  - ### CACHE

    public static final DBFunctionName CACHE
    ファンクション名

  - ### H2

    public static final DBFunctionName H2
    ファンクション名

  - ### OTHER

    public static final DBFunctionName OTHER
    ファンクション名

- ## メソッドの詳細

  - ### values

    public static DBFunctionName[] values()
    Returns an array containing the constants of this enum class, in the order they are declared.
    戻り値:
      an array containing the constants of this enum class, in the order they are declared

  - ### valueOf

    public static DBFunctionName valueOf(String name)
    Returns the enum constant of this class with the specified name. The string must match exactly an identifier used to declare an enum constant in this class. (Extraneous whitespace characters are not permitted.)
    パラメータ:
      `name` - 返される列挙型定数の名前。
    戻り値:
      指定した名前の列挙型定数
    例外:
      `IllegalArgumentException` - if this enum class has no constant with the specified name
      `NullPointerException` - 引数がnullの場合

  - ### getFunctionName

    public String getFunctionName(String func)
    共通ファンクションに対応するデータベース個別のファンクション名を返します。 現時点では、NAME,CON,SUBSTR のみ使用できます。
    パラメータ:
      `func` - 共通ファンクション
    戻り値:
      ファンクション名
    変更履歴:
      5.1.4.0 (2010/03/01) 新規作成, 6.2.2.1 (2015/03/31) SYSDATE 項目追加, 6.3.9.1 (2015/11/27) メソッドの出口は、最後の１か所にすべきです(PMD)。, 5.9.19.1 (2017/04/14) DBF.TYPE追加, 8.0.1.1 (2021/11/12) FROM DUAL 項目追加

  - ### getFunctionName

    public static String getFunctionName(String func, String dbid)
    各データベースに対応するファンクション名を返します。
    パラメータ:
      `func` - ファンクション名(定義文字)
      `dbid` - 接続先ID
    戻り値:
      実ファンクション名
    変更履歴:
      4.3.8.0 (2009/08/01) SUBSTRを追加, 5.1.2.0 (2010/01/01) MySQL対応,SUBSTRB廃止(帳票データの分割の内部処理化に伴う), 5.1.4.0 (2010/03/01) データベース名 ではなく、dbid で判断するように変更, 5.7.7.2 (2014/06/20) DBF.NAME 時の処理の簡素化, 6.2.1.0 (2015/03/13) NAME だけ特殊処理するのではなく、統一する。

  - ### getSequence

    public int getSequence(String seqName, Transaction tran)
    シーケンス名よりシーケンスオブジェクトを検索し、次の値を取り出します。 DBに対するシーケンスオブジェクトは予め作成されている必要があります。 また、MySQLの場合は、シーケンスオブジェクトが実装されていないため、 内部的には、引数のシーケンス名と同じ名前のテーブルから、Integer型の "SEQID"という項目名を検索することにより、シーケンスをエミュレートしています。
    パラメータ:
      `seqName` - シーケンス名
      `tran` - トランザクション
    戻り値:
      シーケンス番号
    変更履歴:
      5.1.9.0 (2010/08/01) 新規追加, 5.8.5.0 (2015/03/06) CACHE追加, 5.9.31.1 (2018/04/13) DBID追加対応

  - ### getSequence

    public int getSequence(String seqName, Transaction tran, String DBID)
    シーケンス名よりシーケンスオブジェクトを検索し、次の値を取り出します。 DBに対するシーケンスオブジェクトは予め作成されている必要があります。 また、MySQLの場合は、シーケンスオブジェクトが実装されていないため、 内部的には、引数のシーケンス名と同じ名前のテーブルから、Integer型の "SEQID"という項目名を検索することにより、シーケンスをエミュレートしています。
    パラメータ:
      `seqName` - シーケンス名
      `tran` - トランザクション
      `DBID` - DBID
    戻り値:
      シーケンス番号
    変更履歴:
      5.1.9.0 (2010/08/01) 新規追加, 5.8.5.0 (2015/03/06) CACHE追加, 6.4.9.3 (2016/08/26) JavaDB(APACHE DERBY) の追加, 5.9.31.1 (2018/04/13) DBID追加対応, 6.9.8.0 (2018/05/28) DBID 対応漏れ,arg引数がないことを明確にするため、nullを渡します。

  - ### getDBName

    public static DBFunctionName getDBName(String dbName)
    各データベースに対応するenum名を返します。
    パラメータ:
      `dbName` - データベース名(null不可)
    戻り値:
      データベースに対応するenum名
    変更履歴:
      5.1.4.0 (2010/03/01) 新規作成, 5.8.5.0 (2015/03/06) CACHE追加, 6.3.9.1 (2015/11/27) メソッドの出口は、最後の１か所にすべきです(PMD)。, 6.4.5.0 (2016/04/08) 規定以外のデータベースでも、動作するように、OTHER を用意する。, 6.4.9.3 (2016/08/26) JavaDB(APACHE DERBY) の追加, 6.8.3.0 (2017/11/27) H2 の追加
    このﾒｿｯﾄﾞは、nullを返しません