パッケージ org.opengion.hayabusa.taglib

# クラス DBCopyTag

java.lang.Object
jakarta.servlet.jsp.tagext.TagSupport
jakarta.servlet.jsp.tagext.BodyTagSupport
org.opengion.hayabusa.taglib.CommonTagSupport
org.opengion.hayabusa.taglib.DBCopyTag

すべての実装されたインタフェース:
  `BodyTag`, `IterationTag`, `JspTag`, `Tag`, `TryCatchFinally`, `Serializable`

public class DBCopyTag extends CommonTagSupport
データベースのデータコピー/移動/更新/削除を行うタグです。

     検索結果のﾃﾞｰﾀを、action に応じた方法で、処理します。
     SELECT文は、BODY部に記述することも可能です。
     BODY にSELECT文を記述しない場合は、names と、table から、SELECT文を作成します。
     names2 は、INSERTやUPDATE の カラム名で、SELECT文の先頭から順に適用します。
     WHERE条件は、SELECT結果を利用できますが、必ず、names2 のカラムか、そうでないならば、
     それ以降に記述してください。

     このタグは、DBTableModel を経由せず、直接、接続元から接続先へデータ処理を行います。
     接続元の１レコード単位に、接続先に対して、処理を実行します。
     よって、大量データ処理が可能ですが、まとめ処理を行っていない分、時間が掛かります。

     用途としては、WORKﾃｰﾌﾞﾙへのﾃﾞｰﾀコピーや、BKUPﾃｰﾌﾞﾙへのコピーが考えられ
     ますが、それらは、select insert などの直接的な処理のほうが良いです。
     ここでは、別ユーザーや、別インスタンス、または、別ﾃﾞｰﾀﾍﾞｰｽ(ORACLEから、MySQLへ)など、
     dbid違いのﾃｰﾌﾞﾙへのﾃﾞｰﾀ処理用途を、想定しています。
     なので、複雑な処理や、PL/SQL等のﾃﾞｰﾀﾍﾞｰｽ独自処理は行えません。
     SELECT文は、直接記述できるため、ﾃﾞｰﾀﾍﾞｰｽ固有の関数や、構文を記載可能ですが、
     INSERT,UPDATE,DELETE 文は、基本的に共通構文であり、WHERE条件等も、一般的は範囲に
     とどめてください。

     SELECTカラムとINSERTカラムが異なる場合は、name 指定と、name2 指定のｶﾗﾑが対応します。
     追加、更新先のカラム名に変更して置いてください。
     BODY部にSELECT文を記述した場合は、ｶﾗﾑ順が、name 順となり、name2 と対応されます。
     constKeys,constVals も、更新先のカラム名で指定します。
     処理の途中でエラー(例えば、ﾕﾆｰｸｷｰ制約等)になった場合は、stopError属性の
     値に応じて処理を継続するかどうかを決定します。
     stopError="true" が初期値なので、エラー時点で、処理を中断します。

     action="INSERT"
        SELECT結果を、table2 に、INSERT します。where2,whereNames2 は使用しません。
        name2 を使用しない場合は、name と同じｶﾗﾑ配列で、INSERT します。
        stopError="false"(エラー時も継続する) とした場合、SELECT結果は、最後まで
        INSERTを試みます。

     action="UPDATE"
        SELECT結果を、table2 に、where2,whereNames2 に基づいて UPDATE します。
        SELECTには、更新で使用する where条件となるカラムを含める必要があります。
        更新するｶﾗﾑは、name2 で指定することになります。
        更新対象が存在しなかった場合は、エラーとは判定していません。

     action="DELETE"
        SELECT結果を、table2 に、where2,whereNames2 に基づいて table2 のﾃﾞｰﾀを 削除 します。
        SELECTには、削除で使用する where条件となるカラムを含める必要があります。
        削除対象が存在しなかった場合は、エラーとは判定していません。

     action="MERGE"
        SELECT結果を、table2 に、where2,whereNames2 に基づいて UPDATE/INSERT します。
        SELECTには、更新で使用する where条件となるカラムを含める必要があります。
        更新するｶﾗﾑは、name2 で指定することになります。
        更新対象が存在しなかった場合は、INSERT になります。
        (つまり、更新を一度試みて、更新件数が、０件の場合に、INSERTします。)
        INSERTするｶﾗﾑは、SELECTしたすべてのｶﾗﾑが対象になります。

     useDelete="true" を指定すると、検索元のﾃﾞｰﾀを削除します。
     INSERT 時に指定すれば、MOVE と同じ効果になります。
     stopError="false" (エラー時でも処理を継続する)にした場合、検索元のﾃﾞｰﾀ削除は、
     エラー行については、実行されません。ただし、UPDATE,DELETE 等で、対象データが
     存在しない場合は、エラーと判断しないため、検索元のﾃﾞｰﾀを削除します。

     SystemData の USE_SQL_INJECTION_CHECK が true か、quotCheck 属性が true の場合は、
     ＳＱＬインジェクション対策用のシングルクォートチェックを行います。リクエスト引数に
     シングルクォート(')が含まれると、エラーになります。

     DBLastSql はセットされません。
     つまり、このタグでSELECTされたデータを、ファイル出力することはできません。

     実行後にリクエストパラメータに以下の値がセットされます。
       DB.COUNT     : 検索結果の件数
       DB.UPCOUNT   : 追加/更新/削除結果の件数
       DB.ERR_CODE  : 検索結果のｴﾗｰｺｰﾄﾞ(複数合った場合は、最後のｴﾗｰｺｰﾄﾞ)

     ※ このタグは、Transaction タグの対象です。

関連項目:
  - 直列化された形式
変更履歴:
  6.8.6.0 (2018/01/19) 新規作成
機能分類
  ＤＢ検索, ＤＢ登録
形式ｻﾝﾌﾟﾙ:

       ●形式：
             ・<og:dbCopy action="INSERT" table="TEST_A" table2="TEST_B" />
               TEST_A のすべてカラム、データを、TEST_B にコピーします。

             ・<og:dbCopy action="UPDATE" names2="A2,B2" table2="TEST_B" where2="C2=[c1]" >
                    select a1,b1,c1 from TEST_A where d1='XXX' order by a1
               </og:dbCopy>
               TEST_A のa1→A2 , b1→B2 ｶﾗﾑに、WHERE条件 TEST_B.C2 が、TEST_A.c1 に一致するﾃﾞｰﾀのみ 更新します。

       ●body：あり(EVAL_BODY_BUFFERED:BODYを評価し、{@XXXX} を解析します)

       ●Tag定義：
         <og:dbCopy
             action             【TAG】実行方法[INSERT/UPDATE/DELETE/MERGE]を指定します(初期値:INSERT)。
             useDelete          【TAG】(jdbcオプション)検索した元のﾃﾞｰﾀを削除するかどうか[true:削除する/false:なにもしない]を指定します(初期値:false)。
             maxRowCount        【TAG】(通常は使いません)データの最大読み込み件数を指定します (初期値:0:[無制限])
             stopZero           【TAG】検索結果が０件のとき処理を続行するかどうか[true/false]を指定します(初期値:false[続行する])
             dbid               【TAG】検索する対象のDB接続IDを指定します(初期値:null)
             table              【TAG】検索する対象のテーブル名を指定します
             names              【TAG】検索する対象のカラム名をCSV形式で複数指定します(初期値:*)
             where              【TAG】検索する対象を特定するキー条件(where句)を指定します
             orderBy            【TAG】検索する対象の検索順(order by句)を指定します
             dbid2              【TAG】登録する対象のDB接続IDを指定します(初期値:null)
             table2             【TAG】登録する対象のテーブル名を指定します
             names2             【TAG】登録する対象のカラム名をCSV形式で複数指定します
             omitNames2         【TAG】登録する対象外のカラム名をCSV形式で複数指定します
             where2             【TAG】登録する対象を特定するキー条件(where句)を指定します
             whereNames2        【TAG】登録する対象を特定するキー条件(where句)をCSV形式で複数指定します
             constKeys2         【TAG】設定値を固定値と置き換える対象となるカラム名をCSV形式で複数指定します
             constVals2         【TAG】設定値を固定値と置き換える対象となる設定値をCSV形式で複数指定します
             quotCheck          【TAG】リクエスト情報の シングルクォート(') 存在チェックを実施するかどうか[true/false]を設定します (初期値:USE_SQL_INJECTION_CHECK[=true])
             stopError          【TAG】登録処理エラーの時に処理を中止するかどうか[true/false]を設定します(初期値:true)
             dispError          【TAG】エラー時にメッセージを表示するか[true/false]を設定します。通常はstopErrorと併用(初期値:true)
             fetchSize          【TAG】(通常は使いません)データのフェッチサイズを指定します(初期値:DB_FETCH_SIZE[=])
             caseKey            【TAG】このタグ自体を利用するかどうかの条件キーを指定します(初期値:null)
             caseVal            【TAG】このタグ自体を利用するかどうかの条件値を指定します(初期値:null)
             caseNN             【TAG】指定の値が、null/ゼロ文字列 でない場合(Not Null=NN)は、このタグは使用されます(初期値:判定しない)
             caseNull           【TAG】指定の値が、null/ゼロ文字列 の場合は、このタグは使用されます(初期値:判定しない)
             caseIf             【TAG】指定の値が、true/TRUE文字列の場合は、このタグは使用されます(初期値:判定しない)
             debug              【TAG】デバッグ情報を出力するかどうか[true/false]を指定します(初期値:false)
         >   ... Body ...
         </og:dbCopy>

       ●使用例
             ・<og:dbCopy action="INSERT" names2="A2,B2,C2" table2="TEST_B" >
                    select a1,b1,c1 from TEST_A where d1='XXX' order by a1
               </og:dbCopy>
               TEST_A のa1→A2 , b1→B2 , c1→C2 ｶﾗﾑに、追加します。

             ・<og:dbCopy action="INSERT" names="a1,b1,c1" table="TEST_A" names2="A2,B2,C2" table2="TEST_B" />
               TEST_A のa1→A2 , b1→B2 , c1→C2 ｶﾗﾑに、追加します。 (先の例と同じ処理)

             ・<og:dbCopy action="INSERT" table="TEST_A" where="d1='1'" dbid="LOCAL" dbid2="OTHER" >
               接続先：LOCAL の TEST_A の 全カラムのd1='1' のレコードを、接続先：OTHER のTEST_A に追加します。
               接続先違い（ユーザー、やﾃﾞｰﾀﾍﾞｰｽ違い）へのINSERTです。
               table2 を指定しない場合は、table と同じとみなされます。

             ・<og:dbCopy action="INSERT" table="TEST_A" where="d1='1'" dbid="LOCAL" dbid2="OTHER" stopError="false" useDelete="true" >
               接続先：LOCAL の TEST_A の 全カラムのd1='1' のレコードを、接続先：OTHER のTEST_A に移動します。
               接続先違い（ユーザー、やﾃﾞｰﾀﾍﾞｰｽ違い）への移動です。
               先のINSERT が成功したレコードは削除され、最後まで処理が行われます。
               INSERTが失敗（つまり、接続先：OTHER にすでに、ユニークレコードが存在する場合など）時の、検索元のレコードは
               削除されません。

             ・<og:dbCopy action="MERGE" table="TEST_A" where="d1='1'" dbid="LOCAL" names2="a1,b1,c1" dbid2="OTHER" where="ukey=[ukey]" stopError="false" useDelete="true" >
               接続先：LOCAL の TEST_A の 全カラムのd1='1' のレコードを、接続先：OTHER のTEST_A に移動します。
               接続先：OTHER に、移動先.ukey=[移動元ukey] のﾃﾞｰﾀがあれば、name2="a1,b1,c1" カラムだけ、UPDATE を行い、
               更新件数が、０件の場合は、検索したすべてのカラムで、INSERT を行います。

導入されたバージョン:
  JDK8.0,

- ## フィールドの概要

  フィールド
  修飾子とタイプ
  フィールド
  説明
  `static final String`
  `ACT_DELETE`
  action 引数に渡す事の出来る アクションコマンド 削除する "DELETE"
  `static final String`
  `ACT_INSERT`
  action 引数に渡す事の出来る アクションコマンド 追加する "INSERT"
  `static final String`
  `ACT_MERGE`
  action 引数に渡す事の出来る アクションコマンド マージする "MERGE"
  `static final String`
  `ACT_UPDATE`
  action 引数に渡す事の出来る アクションコマンド 更新する "UPDATE"

  ### クラスから継承されたフィールド org.opengion.hayabusa.taglib.CommonTagSupport

  `BR, BUFFER_MIDDLE, CR`

  ### クラスから継承されたフィールド jakarta.servlet.jsp.tagext.BodyTagSupport

  `bodyContent`

  ### クラスから継承されたフィールド jakarta.servlet.jsp.tagext.TagSupport

  `id, pageContext`

  ### インタフェースから継承されたフィールド jakarta.servlet.jsp.tagext.BodyTag

  `EVAL_BODY_BUFFERED, EVAL_BODY_TAG`

  ### インタフェースから継承されたフィールド jakarta.servlet.jsp.tagext.IterationTag

  `EVAL_BODY_AGAIN`

  ### インタフェースから継承されたフィールド jakarta.servlet.jsp.tagext.Tag

  `EVAL_BODY_INCLUDE, EVAL_PAGE, SKIP_BODY, SKIP_PAGE`

- ## コンストラクタの概要

  コンストラクタ
  コンストラクタ
  説明
  `DBCopyTag()`
  デフォルトコンストラクター

- ## メソッドの概要

  修飾子とタイプ
  メソッド
  説明
  `int`
  `doAfterBody()`
  Taglibのタグ本体を処理する doAfterBody() を オーバーライドします。
  `int`
  `doEndTag()`
  Taglibの終了タグが見つかったときに処理する doEndTag() を オーバーライドします。
  `int`
  `doStartTag()`
  Taglibの開始タグが見つかったときに処理する doStartTag() を オーバーライドします。
  `protected void`
  `release2()`
  タグリブオブジェクトをリリースします。
  `void`
  `setAction(String action)`
  【TAG】実行方法を指定します[INSERT/UPDATE/DELETE/MERGE] (初期値:INSERT)。
  `void`
  `setConstKeys2(String keys)`
  【TAG】設定値を固定値と置き換える対象となるカラム名をCSV形式で複数指定します。
  `void`
  `setConstVals2(String vals)`
  【TAG】設定値を固定値と置き換える対象となる設定値をCSV形式で複数指定します。
  `void`
  `setDbid(String id)`
  【TAG】(通常は使いません)検索する対象のDB接続IDを指定します(初期値:null)。
  `void`
  `setDbid2(String id)`
  【TAG】登録する対象のDB接続IDを指定します(初期値:null)。
  `void`
  `setDispError(String flag)`
  【TAG】エラー時にメッセージを表示するか[true/false]を設定します。
  `void`
  `setFetchSize(String size)`
  【TAG】(通常は使いません)データのフェッチサイズを指定します (初期値:DB_FETCH_SIZE[=])。
  `void`
  `setMaxRowCount(String count)`
  【TAG】(通常は使いません)データの最大読み込み件数を指定します(初期値:0:[無制限])。
  `void`
  `setNames(String names)`
  【TAG】検索する対象のカラム名をCSV形式で複数指定します(初期値:*)。
  `void`
  `setNames2(String names)`
  【TAG】登録する対象のカラム名をCSV形式で複数指定します(初期値:null)。
  `void`
  `setOmitNames2(String omitNames)`
  【TAG】登録対象外のカラム名をCSV形式で複数指定します(初期値:null)。
  `void`
  `setOrderBy(String orderBy)`
  【TAG】検索する対象の検索順(order by句)を指定します。
  `void`
  `setQuotCheck(String flag)`
  【TAG】リクエスト情報の シングルクォート(') 存在チェックを実施するかどうか[true/false]を設定します (初期値:USE_SQL_INJECTION_CHECK[=])。
  `void`
  `setStopError(String flag)`
  【TAG】登録処理エラーの時に処理を中止するかどうか[true/false]を設定します(初期値:true)。
  `void`
  `setStopZero(String cmd)`
  【TAG】検索結果が０件のとき処理を停止するかどうか[true/false]を指定します(初期値:false[続行する])。
  `void`
  `setTable(String table)`
  【TAG】検索する対象のテーブル名を指定します(初期値:null)。
  `void`
  `setTable2(String table)`
  【TAG】登録する対象のテーブル名を指定します(初期値:null)。
  `void`
  `setUseDelete(String useDel)`
  【TAG】(jdbcオプション)検索した元のﾃﾞｰﾀを削除するかどうか[true:削除する/false:なにもしない]を指定します(初期値:false)。
  `void`
  `setWhere(String where)`
  【TAG】検索する対象を特定するキー条件(where句)を指定します。
  `void`
  `setWhere2(String where)`
  【TAG】登録する対象を特定するキー条件(where句)を指定します。
  `void`
  `setWhereNames2(String names)`
  【TAG】登録する対象を特定するキー条件(where句)をCSV形式で複数指定します。
  `String`
  `toString()`
  このオブジェクトの文字列表現を返します。

  ### クラスから継承されたメソッド org.opengion.hayabusa.taglib.CommonTagSupport

  `add, add, addEventColumn, addEventColumn, check, commitTableObject, debugPrint, doCatch, doFinally, get, getApplicationInfo, getAttributes, getBodyRawString, getBodyString, getContextAttribute, getContextPath, getCookie, getCSVParameter, getCSVParameter, getDateFormat, getDBColumn, getDBFunctionName, getDocumentLink, getGUIInfo, getGUIInfoAttri, getHostName, getLabel, getLabelInterface, getLanguage, getLongLabel, getMsg, getMsglbl, getObject, getParameterNames, getParameterRows, getRequest, getRequestAttribute, getRequestCacheData, getRequestMethod, getRequestParameter, getRequestParameterValues, getRequestValue, getRequestValue, getRequestValues, getReservedParameter, getReservedValue, getResource, getSanitizedBodyString, getScope, getSessionAttribute, getTagName, getTransaction, getUser, getUserEditInfo, getUserInfo, isAjaxSubmitRequest, isDebug, isNoTransitionRequest, isNull, jspPrint, makeUrl, removeContextAttribute, removeObject, removeRequestAttribute, removeSessionAttribute, set, setAjaxSubmitRequest, setCaseIf, setCaseKey, setCaseNN, setCaseNull, setCaseVal, setContextAttribute, setCookie, setDebug, setLanguage, setLbl, setNoTransitionRequest, setObject, setObject, setParameterNames, setParameterRows, setRequestAttribute, setRequestCacheData, setScope, setSessionAttribute, setUserInfo, startQueryTransaction, sys, sysBool, sysInt, useMainTrans, useQuotCheck, useTag, useXssCheck`

  ### クラスから継承されたメソッド jakarta.servlet.jsp.tagext.BodyTagSupport

  `doInitBody, getBodyContent, getPreviousOut, release, setBodyContent`

  ### クラスから継承されたメソッド jakarta.servlet.jsp.tagext.TagSupport

  `findAncestorWithClass, getId, getParent, getValue, getValues, removeValue, setId, setPageContext, setParent, setValue`

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

  `clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait`

  ### インタフェースから継承されたメソッド jakarta.servlet.jsp.tagext.Tag

  `getParent, setPageContext, setParent`

- ## フィールド詳細

  - ### ACT_INSERT

    public static final String ACT_INSERT
    action 引数に渡す事の出来る アクションコマンド 追加する "INSERT"
    関連項目:
      - 定数フィールド値

  - ### ACT_UPDATE

    public static final String ACT_UPDATE
    action 引数に渡す事の出来る アクションコマンド 更新する "UPDATE"
    関連項目:
      - 定数フィールド値

  - ### ACT_DELETE

    public static final String ACT_DELETE
    action 引数に渡す事の出来る アクションコマンド 削除する "DELETE"
    関連項目:
      - 定数フィールド値

  - ### ACT_MERGE

    public static final String ACT_MERGE
    action 引数に渡す事の出来る アクションコマンド マージする "MERGE"
    関連項目:
      - 定数フィールド値

- ## コンストラクタの詳細

  - ### DBCopyTag

    public DBCopyTag()
    デフォルトコンストラクター
    変更履歴:
      6.8.6.0 (2018/01/19) 新規作成

- ## メソッドの詳細

  - ### doStartTag

    public int doStartTag()
    Taglibの開始タグが見つかったときに処理する doStartTag() を オーバーライドします。
    定義:
      `doStartTag` インタフェース内 `Tag`
    オーバーライド:
      `doStartTag` クラス内 `CommonTagSupport`
    戻り値:
      後続処理の指示
    変更履歴:
      6.8.6.0 (2018/01/19) 新規作成

  - ### doAfterBody

    public int doAfterBody()
    Taglibのタグ本体を処理する doAfterBody() を オーバーライドします。
    定義:
      `doAfterBody` インタフェース内 `IterationTag`
    オーバーライド:
      `doAfterBody` クラス内 `CommonTagSupport`
    戻り値:
      後続処理の指示(SKIP_BODY)
    変更履歴:
      6.8.6.0 (2018/01/19) 新規作成

  - ### doEndTag

    public int doEndTag()
    Taglibの終了タグが見つかったときに処理する doEndTag() を オーバーライドします。
    定義:
      `doEndTag` インタフェース内 `Tag`
    オーバーライド:
      `doEndTag` クラス内 `CommonTagSupport`
    戻り値:
      後続処理の指示
    変更履歴:
      6.8.6.0 (2018/01/19) 新規作成

  - ### release2

    protected void release2()
    タグリブオブジェクトをリリースします。 キャッシュされて再利用されるので、フィールドの初期設定を行います。
    オーバーライド:
      `release2` クラス内 `CommonTagSupport`
    変更履歴:
      6.8.6.0 (2018/01/19) 新規作成, 6.9.1.0 (2018/02/26) displayMsg,overflowMsg,notfoundMsg は未使用のため、削除

  - ### setAction

    public void setAction(String action)
    【TAG】実行方法を指定します[INSERT/UPDATE/DELETE/MERGE] (初期値:INSERT)。
    パラメータ:
      `action` - アクション [INSERT/UPDATE/DELETE/MERGE]
    変更履歴:
      6.8.6.0 (2018/01/19) 新規作成
    説明:
      指定できるアクションは、追加(INSERT)、更新(UPDATE)、削除(DELETE)、マージ(MERGE)です。 マージ以外は、お馴染みのSQL処理です。 マージは、条件にしたがって、UPDATEを行い、更新件数が、0件の場合に、INSERTを行う、複合処理です。 初期値は、INSERT です。

  - ### setUseDelete

    public void setUseDelete(String useDel)
    【TAG】(jdbcオプション)検索した元のﾃﾞｰﾀを削除するかどうか[true:削除する/false:なにもしない]を指定します(初期値:false)。
    パラメータ:
      `useDel` - 検索した元のﾃﾞｰﾀを削除するかどうか
    変更履歴:
      6.8.6.0 (2018/01/19) 新規作成
    説明:
      アクションで指定した処理とともに、検索元のデータを削除するかどうかを指定します。 例えば、action="INSERT" で、useDelete="true" を指定すると、 ResultSet#deleteRow() を実行して、 検索元のデータを削除し、更新先にINSERT するため見かけ上、データ移動することになります。 stopError="false" (エラー時でも処理を継続する)にした場合、検索元のﾃﾞｰﾀ削除は、 エラー行については、実行されません。ただし、UPDATE,DELETE 等で、対象データが 存在しない場合は、エラーと判断しないため、検索元のﾃﾞｰﾀを削除します。 初期値は、false です。 ※ ResultSet#deleteRow() をサポートしない場合もあるため、仕様の有無は、対象DBをご確認ください。

  - ### setMaxRowCount

    public void setMaxRowCount(String count)
    【TAG】(通常は使いません)データの最大読み込み件数を指定します(初期値:0:[無制限])。
    パラメータ:
      `count` - 最大件数
    変更履歴:
      6.8.6.0 (2018/01/19) 新規作成
    説明:
      検索処理の最大件数を指定します。 このタグでは、検索都度、更新するため、メモリ等の負荷は、DBTableModel を使用する 通常の検索より少なくてすみます。 初期値は、0(無制限=実際は、Integer.MAX_VALUE)です。

  - ### setStopZero

    public void setStopZero(String cmd)
    【TAG】検索結果が０件のとき処理を停止するかどうか[true/false]を指定します(初期値:false[続行する])。
    パラメータ:
      `cmd` - ０件時停止可否 [true:処理を中止する/false:続行する]
    変更履歴:
      6.8.6.0 (2018/01/19) 新規作成
    説明:
      初期値は、false(続行する)です。

  - ### setDbid

    public void setDbid(String id)
    【TAG】(通常は使いません)検索する対象のDB接続IDを指定します(初期値:null)。
    パラメータ:
      `id` - データベース接続ID
    変更履歴:
      6.8.6.0 (2018/01/19) 新規作成
    説明:
      検索側のSELECT文を実行するDB接続IDを指定します。 これは、システムリソースで、DEFAULT_DB_URL 等で指定している データベース接続先 情報に、XX_DB_URL を定義することで、 dbid="XX" とすると、この 接続先を使用して データベースにアクセスできます。 初期値は、Default(=null) です。

  - ### setTable

    public void setTable(String table)
    【TAG】検索する対象のテーブル名を指定します(初期値:null)。
    パラメータ:
      `table` - テーブル名
    変更履歴:
      6.8.6.0 (2018/01/19) 新規作成
    説明:
      検索は、この table名を検索するか、BODYに記述された SQL 文を実行します。 単独検索の場合(JOIN等を行わない場合)に、使用します。

  - ### setNames

    public void setNames(String names)
    【TAG】検索する対象のカラム名をCSV形式で複数指定します(初期値:*)。
    パラメータ:
      `names` - 引数の名称 (CSV形式)
    変更履歴:
      6.8.6.0 (2018/01/19) 新規作成
    説明:
      複数ある場合は、CSV形式で渡します。 BODYにSELECT文を記述した場合は、names 属性は不要です。 記述した場合は、SELECTしたカラムから、names属性に指定されたカラムだけを SELECT対象にします。 検索元の names と、登録先の、names2 が、対応関係になります。 初期値は、指定のカラムすべて(*)です。

  - ### setWhere

    public void setWhere(String where)
    【TAG】検索する対象を特定するキー条件(where句)を指定します。
    パラメータ:
      `where` - 検索条件 (where句)
    変更履歴:
      6.8.6.0 (2018/01/19) 新規作成
    説明:
      検索するSELECT文のwhere 句を指定します。通常の WHERE 句の書き方と同じで、 {@XXXX} などが使えます。 複雑な場合は、BODY に記述してください。where タグや、andタグ等を使って、 通常のquery タグで指定する方法を、そのまま使います。

  - ### setOrderBy

    public void setOrderBy(String orderBy)
    【TAG】検索する対象の検索順(order by句)を指定します。
    パラメータ:
      `orderBy` - 検索条件 (order By句)
    変更履歴:
      6.8.6.0 (2018/01/19) 新規作成
    説明:
      検索するSELECT文のorder by 句を指定します。通常の order by 句の書き方と同じで、 {@XXXX} などが使えます。

  - ### setDbid2

    public void setDbid2(String id)
    【TAG】登録する対象のDB接続IDを指定します(初期値:null)。
    パラメータ:
      `id` - データベース接続ID
    変更履歴:
      6.8.6.0 (2018/01/19) 新規作成
    説明:
      登録側のINSERT/UPDATE/DELETE文を実行するDB接続IDを指定します。 これは、システムリソースで、DEFAULT_DB_URL 等で指定している データベース接続先 情報に、XX_DB_URL を定義することで、 dbid="XX" とすると、この 接続先を使用して データベースにアクセスできます。 初期値は、Default(=null) です。

  - ### setTable2

    public void setTable2(String table)
    【TAG】登録する対象のテーブル名を指定します(初期値:null)。
    パラメータ:
      `table` - テーブル名
    変更履歴:
      6.8.6.0 (2018/01/19) 新規作成
    説明:
      登録は、この table名を使用します。 table2 を指定しない場合は、table と同じテーブルが使用されます。 その場合は、必ず、table が指定されます。

  - ### setNames2

    public void setNames2(String names)
    【TAG】登録する対象のカラム名をCSV形式で複数指定します(初期値:null)。
    パラメータ:
      `names` - 引数の名称 (CSV形式)
    変更履歴:
      6.8.6.0 (2018/01/19) 新規作成
    説明:
      登録する対象のカラム名は、検索したカラム名の順番に割り当てられます。 例えば、names 属性に、a1,b1,c1 と指定した場合、names2 に、A2,B2,C2 と指定すれば、 順番に、a1→A2 , b1→B2 , c1→C2 に割り当てられます。 BODY にSELECT文を記述した場合も、names2 を指定すれば、指定のカラムの順番に割り当てます。 これは、SELECT 側と、INSERT/UPDATE 側のカラム名が異なる場合に、検索側に、別名(as 別名)を 指定する必要がありません。 指定しない場合(初期値)は、names または、SELECT文のすべてのカラムが、同一名として処理されます。

  - ### setOmitNames2

    public void setOmitNames2(String omitNames)
    【TAG】登録対象外のカラム名をCSV形式で複数指定します(初期値:null)。
    パラメータ:
      `omitNames` - 登録対象外のカラム列 (CSV形式)
    変更履歴:
      6.8.6.0 (2018/01/19) 新規作成
    説明:
      names2 の逆で、登録対象から省くカラム名を指定します。 table 指定や、select * from で、カラム名を大量に指定したい場合、names2 で 指定するより、除外するカラム名を指定するほうが、少なく（判りやすく）なる 場合があります。

  - ### setWhere2

    public void setWhere2(String where)
    【TAG】登録する対象を特定するキー条件(where句)を指定します。
    パラメータ:
      `where` - 検索条件 (where句)
    変更履歴:
      6.8.6.0 (2018/01/19) 新規作成
    説明:
      登録するUPDATE/DELETE文のwhere 句を指定します。通常の{@XXXX} のほかに、 [検索カラム名] も使用できます。これは、検索側の where 属性と異なります。 ただし、複雑な where 条件は使えませんので、できるだけ、検索側で調整して置いてください。 action="UPDATE/DELETE/MERGE" でのみ有効です。

  - ### setWhereNames2

    public void setWhereNames2(String names)
    【TAG】登録する対象を特定するキー条件(where句)をCSV形式で複数指定します。
    パラメータ:
      `names` - 登録条件カラム (where句)作成のためのカラム名(CSV形式)
    変更履歴:
      6.8.6.0 (2018/01/19) 新規作成
    説明:
      生成するUPDATEのwhere 句を指定する方法として、複数のカラム名をCSV指定し、内部で KEY=[KEY] 文字列を作成します。 ここでは、カラム名は、データベースのカラム名と同じで、かつ、検索側にも 同じカラムのデータが存在していること、という条件付きとします。 また、where 条件との併用を行いますが、こちらの条件が先に使用され、where 条件は、 and を付けて、文字列結合されます。 例： CLM,SYSTEM_ID,KBSAKU ⇒ CLM=[CLM] and SYSTEM_ID=[SYSTEM_ID] and KBSAKU=[KBSAKU]

  - ### setConstKeys2

    public void setConstKeys2(String keys)
    【TAG】設定値を固定値と置き換える対象となるカラム名をCSV形式で複数指定します。
    パラメータ:
      `keys` - 固定値カラム (CSV形式)
    関連項目:
      - `setConstVals2(String)`
    変更履歴:
      6.8.6.0 (2018/01/19) 新規作成
    説明:
      names 属性のカラムや table 属性より、INSERT/UPDATE文を作成する場合 外部から指定した固定値を指定するための、カラム名をCSV形式(CSV)で複数指定します。

  - ### setConstVals2

    public void setConstVals2(String vals)
    【TAG】設定値を固定値と置き換える対象となる設定値をCSV形式で複数指定します。
    パラメータ:
      `vals` - 設定値(CSV形式)
    関連項目:
      - `setConstKeys2(String)`
    変更履歴:
      6.8.6.0 (2018/01/19) 新規作成
    説明:
      names 属性のカラムや table 属性より、INSERT/UPDATE文を作成する場合 外部から指定した固定値を指定するための、カラム名に対応する設定値をCSV形式(CSV)で 複数指定します。ここで指定する設定値は、constKeys2 属性と対応させます。

  - ### setQuotCheck

    public void setQuotCheck(String flag)
    【TAG】リクエスト情報の シングルクォート(') 存在チェックを実施するかどうか[true/false]を設定します (初期値:USE_SQL_INJECTION_CHECK[=])。
    パラメータ:
      `flag` - クォートチェック [true:する/それ以外:しない]
    変更履歴:
      6.8.6.0 (2018/01/19) 新規作成
    説明:
      ＳＱＬインジェクション対策の一つとして、暫定的ではありますが、SQLのパラメータに 渡す文字列にシングルクォート(') を許さない設定にすれば、ある程度は防止できます。 数字タイプの引数には、 or 5=5 などのシングルクォートを使用しないコードを埋めても、 数字チェックで検出可能です。文字タイプの場合は、必ず (')をはずして、 ' or 'A' like 'A のような形式になる為、(')チェックだけでも有効です。 (') が含まれていたエラーにする(true)／かノーチェックか(false)を指定します。 初期値は、SystemData#USE_SQL_INJECTION_CHECK です。

  - ### setStopError

    public void setStopError(String flag)
    【TAG】登録処理エラーの時に処理を中止するかどうか[true/false]を設定します(初期値:true)。
    パラメータ:
      `flag` - エラー時処理中止 [true:中止する/false:中止しない]
    変更履歴:
      6.8.6.0 (2018/01/19) 新規作成
    説明:
      false(中止しない)に設定する場合、後続処理では、{@DB.ERR_CODE}の値により、 異常/正常判断を行いますが、処理は、継続されます。 ちなみに、更新/削除処理で、対象データが存在しない場合(0件更新や、0件削除)は、エラーでは ありません。 初期値は、true(中止する)です。

  - ### setDispError

    public void setDispError(String flag)
    【TAG】エラー時にメッセージを表示するか[true/false]を設定します。通常はstopErrorと併用(初期値:true)。
    パラメータ:
      `flag` - [true:表示する/false:表示しない]
    変更履歴:
      6.8.6.0 (2018/01/19) 新規作成
    説明:
      false(表示しない)に設定する場合、後続処理では、{@DB.ERR_MSG}の値により、 本来表示されるはずだったメッセージを取得可能です。 stopErrorと併用して、JSON形式でエラーを返す場合等に利用します。 初期値は、true(表示する)です。 ※false指定の場合は件数等も表示されなくなります。

  - ### setFetchSize

    public void setFetchSize(String size)
    【TAG】(通常は使いません)データのフェッチサイズを指定します (初期値:DB_FETCH_SIZE[=])。
    パラメータ:
      `size` - フェッチ行数
    説明:
      より多くの行が必要なときに、データベースから取り出す必要がある行数に ついてのヒントを JDBC ドライバに提供します。 指定された行数は、この Statement を使って作成された結果セットにだけ影響します。 指定された値が 0 の場合、ヒントは無視されます。 (初期値:システム定数のDB_FETCH_SIZE[=])。

  - ### toString

    public String toString()
    このオブジェクトの文字列表現を返します。 基本的にデバッグ目的に使用します。
    オーバーライド:
      `toString` クラス内 `CommonTagSupport`
    戻り値:
      このクラスの文字列表現
    変更履歴:
      6.8.6.0 (2018/01/19) 新規作成