org.opengion.hayabusa.taglib

## クラス PlsqlUpdateTag

- java.lang.Object
- - javax.servlet.jsp.tagext.TagSupport
  - - javax.servlet.jsp.tagext.BodyTagSupport
    - - org.opengion.hayabusa.taglib.CommonTagSupport
      - - org.opengion.hayabusa.taglib.QueryTag
        - - org.opengion.hayabusa.taglib.PlsqlUpdateTag

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

      public class PlsqlUpdateTag
      extends QueryTag

       PLSQLをCALLしてデータベースにアクセスするタグです。
       queryType = "JDBCPLSQL" が、標準で用意されています。
       queryType と 実際のJavaクラスとの関連付けは、システムリソースの Query_JDBCPLSQL 属性です。

       DBTableModel内のデータを 配列でPL/SQLに渡してDB登録します。

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

  関連項目:
    直列化された形式
  形式サンプル:

         ●形式：<og:plsqlUpdate command="…" names="…" dbType="…" queryType="JDBCPLSQL" >{plsql(?,?,?,?,?)} <og:plsqlUpdate>
         ●body：あり(EVAL_BODY_BUFFERED:BODYを評価し、{@XXXX} を解析します)

         ●Tag定義：
           <og:plsqlUpdate
               queryType          【TAG】Query を発行する為のクラスIDを指定します(<a href="/gf/jsp/DOC03/index.jsp?command=NEW&GAMENID=DOC03&VERNO=6.4.8.0&VALUENAME=queryType" target="CONTENTS">初期値:JDBCPLSQL</a>)
               command            【TAG】コマンド (NEW,RENEW)をセットします(PlsqlUpdateTag,UpdateTag の場合は、ENTRY)
               scope              【TAG】キャッシュする場合のスコープ[request/page/session/applicaton]を指定します(初期値:session)
               maxRowCount        【TAG】(通常は使いません)データの最大読み込み件数を指定します (初期値:DB_MAX_ROW_COUNT[=1000])(0:[無制限])
               skipRowCount       【TAG】(通常は使いません)データの読み始めの初期値を指定します
               notfoundMsg        【TAG】検索結果がゼロ件の場合に表示するメッセージリソースIDを指定します(初期値:MSG0077[対象データはありませんでした])
               names              【TAG】PL/SQLを利用する場合の引数にセットすべき データの名称をCSV形式で複数指定します
               dbType             【TAG】Queryオブジェクトに渡す引数のタイプ定義(例:type名_ARRAY)
               selectedAll        【TAG】データを全件選択済みとして処理するかどうか[true/false]を指定します(初期値:false)
               tableId            【TAG】(通常は使いません)結果のDBTableModelを、sessionに登録するときのキーを指定します
               dbid               【TAG】(通常は使いません)Queryオブジェクトを作成する時のDB接続IDを指定します
               stopError          【TAG】PLSQL/SQL処理エラーの時に処理を中止するかどうか[true/false]を設定します(初期値:true)
               tableModelCommit   【TAG】テーブルモデルの確定処理を行うかどうか[true/false]を設定します(初期値:true)
               useTimeView        【TAG】処理時間を表示する TimeView を表示するかどうかを指定します
        										(初期値:VIEW_USE_TIMEBAR[=true])。
               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:plsqlUpdate>

         ●使用例
            ・引数/プロシジャーを他のJSPから渡す場合
            【copy.jsp】
                <og:hidden name="names" value="UNIQ,USRID,ECNO,EDBN" />
                <og:hidden name="SQL" value="{ call RKP0271E.RK0271E( ?,?,?,?,? ) }" />
            【entry.jsp】
                <og:plsqlUpdate
                    command    = "{@command}"
                    names      = "{@names}"         →PL/SQLに渡す引数(配列)のカラム名
                    dbType     = "RK0271ARG"             →PL/SQLに渡す引数(配列)の定義ファイル名
                    queryType  = "JDBCPLSQL" >
                {@SQL}                              →CALLするPL/SQL
                </og:plsqlUpdate>

            ・引数/プロシジャーを直接書く場合
            【entry.jsp】
                <og:plsqlUpdate
                    command    = "{@command}"
                    names      = "UNIQ,USRID,ECNO,EDBN"  →PL/SQLに渡す引数(配列)のカラム名
                    dbType     = "RK0271ARG"             →PL/SQLに渡す引数(配列)の定義ファイル名
                    queryType  = "JDBCPLSQL" >
                { call RKP0271E.RK0271E( ?,?,?,?,? )}    →CALLするPL/SQL
                </og:plsqlUpdate>

            ＜＜参考＞＞
            ・RKP0271E.RK0271E( ?,?,?,?,? )の｢?｣の意味
                (RKP0271E.spc)------------------------------------------------------------
                CREATE OR REPLACE PACKAGE RKP0271E AS
                PROCEDURE RK0271E(
                     P_KEKKA    OUT    NUMBER           -- 1個目の｢?｣⇒結果 0:正常 1:警告 2:異常
                    ,P_ERRMSGS  OUT    ERR_MSG_ARRAY    -- 2個目の｢?｣⇒エラーメッセージ配列
                    ,P_NAMES     IN    VARCHAR2         -- 3個目の｢?｣⇒カラム名チェック用文字列
                    ,P_SYSARGS   IN    SYSARG_ARRAY     -- 4個目の｢?｣⇒登録条件配列(改廃(A:追加/C:変更/D:削除)等がｾｯﾄされます)
                    ,P_RK0271    IN    RK0271ARG_ARRAY  -- 5個目の｢?｣⇒登録データ配列

            ・RK0271ARGの定義の仕方
                (RK0271ARG.sql)------------------------------------------------------------
                DROP TYPE RK0271ARG_ARRAY;
                CREATE OR REPLACE TYPE RK0271ARG AS OBJECT
                (
                     UNIQ                VARCHAR2(11)
                    ,USRID               VARCHAR2(5)
                    ,ECNO                VARCHAR(7)
                    ,EDBN                VARCHAR(2)
                ) ;
                /
                CREATE OR REPLACE TYPE RK0271ARG_ARRAY AS VARRAY(100) OF RK0271ARG;
                /

  機能分類
    ＤＢ登録
  バージョン
    4.0
  作成者
    Kazuhiko Hasegawa
  導入されたバージョン:
    JDK5.0,

- - ### フィールドのサマリー

    フィールド
    修飾子とタイプ | フィールドと説明
    --- | ---
    `static String` | `CMD_ENTRY` command 引数に渡す事の出来る コマンド 登録"ENTRY"
    `protected String` | `userDBType` 引数のタイプ定義

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

      `CMD_NEW, CMD_RENEW, command, displayMsg, dyStart, ERR_MSG_ID, errCode, errMessage, executeCount, maxRowCount, names, outMessage, quotCheck, skipRowCount, sql, stopError, table, tableId, useTimeView, xssCheck`

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

      `BR, BUFFER_MIDDLE, CR`

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

      `bodyContent`

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

      `id, pageContext`

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

      `EVAL_BODY_BUFFERED, EVAL_BODY_TAG`

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

      `EVAL_BODY_AGAIN`

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

      `EVAL_BODY_INCLUDE, EVAL_PAGE, SKIP_BODY, SKIP_PAGE`

  - ### コンストラクタのサマリー

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

  - ### メソッドのサマリー

    すべてのメソッド インスタンス・メソッド concreteメソッド
    修飾子とタイプ | メソッドと説明
    --- | ---
    `int` | `doEndTag()` Taglibの終了タグが見つかったときに処理する doEndTag() を オーバーライドします。
    `int` | `doStartTag()` Taglibの開始タグが見つかったときに処理する doStartTag() を オーバーライドします。
    `protected void` | `execute(Query query)` Query を実行します。
    `protected int[]` | `getParameterRows()` 表示データの HybsSystem.ROW_SEL_KEY を元に、選ばれた 行を処理の対象とします。
    `protected void` | `release2()` タグリブオブジェクトをリリースします。
    `void` | `setDbType(String type)` 【TAG】Queryオブジェクトに渡す引数のタイプ定義(例:type名_ARRAY)。
    `void` | `setQueryType(String id)` 【TAG】Query を発行する為のクラスIDを指定します(<a href="/gf/jsp/DOC03/index.jsp?command=NEW&GAMENID=DOC03&VERNO=6.4.8.0&VALUENAME=queryType" target="CONTENTS">初期値:JDBCPLSQL</a>)。
    `void` | `setSelectedAll(String all)` 【TAG】データを全件選択済みとして処理するかどうか[true/false]を指定します(初期値:false)。
    `void` | `setTableModelCommit(String flag)` 【TAG】テーブルモデルに対する確定処理を行うかどうかを指定します(初期値:true)。
    `String` | `toString()` このオブジェクトの文字列表現を返します。

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

      `doAfterBody, getRequest, setCheckNames, setCommand, setDbid, setDisplayMsg, setMainTrans, setMaxRowCount, setModifyType, setNames, setNotfoundMsg, setOutMessage, setOverflowMsg, setQuotCheck, setSkipRowCount, setStopError, setStopZero, setTableId, setTrace, setUseBeforeHtmlTag, setUseTimeView, setXssCheck`

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

      `add, add, addEventColumn, addEventColumn, check, commitTableObject, debugPrint, doCatch, doFinally, get, getApplicationInfo, getAttributes, getBodyRawString, getBodyString, getContextAttribute, getContextPath, getCookie, getCSVParameter, getCSVParameter, getDataCondition, getDateFormat, getDBColumn, getDBFunctionName, getDocumentLink, getGUIInfo, getGUIInfoAttri, getHostName, getLabel, getLabelInterface, getLanguage, getLASTAttri, getLongLabel, getMsg, getMsglbl, getNVLAttri, getObject, getParameterNames, getRequest, getRequestAttribute, getRequestCacheData, getRequestMethod, getRequestParameter, getRequestParameterValues, getRequestValue, getRequestValue, getRequestValues, getReservedParameter, getReservedValue, getResource, getSanitizedBodyString, getScope, getSessionAttribute, getSumRequestValue, 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`

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

      `doInitBody, getBodyContent, getPreviousOut, release, setBodyContent`

    - ### クラスから継承されたメソッド javax.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`

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

      `getParent, setPageContext, setParent`

- - ### フィールドの詳細

    - #### CMD_ENTRY

          public static final String CMD_ENTRY

      command 引数に渡す事の出来る コマンド 登録"ENTRY"
      関連項目:
        定数フィールド値

    - #### userDBType

          protected String userDBType

      引数のタイプ定義

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

    - #### PlsqlUpdateTag

          public PlsqlUpdateTag()

      デフォルトコンストラクター
      変更履歴:

        6.4.2.0 (2016/01/29) PMD refactoring. Each class should declare at least one constructor.

  - ### メソッドの詳細

    - #### doStartTag

          public int doStartTag()

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

        6.3.4.0 (2015/08/01) caseKey,caseVal,caseNN,caseNull,caseIf 属性対応
        6.4.3.4 (2016/03/11) String配列 から、Setに置き換えます。

    - #### doEndTag

          public int doEndTag()

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

        3.1.1.2 (2003/04/04) Tomcat4.1 対応。release2() を doEndTag()で呼ぶ。
        3.5.5.2 (2004/04/02) TaglibUtil.makeHTMLErrorTable メソッドを利用
        3.6.0.8 (2004/11/19) DBTableModel をセーブする時に、トランザクションチェックを行います。
        3.6.1.0 (2005/01/05) オーバーフロー時と登録件数の表示をコメントします。
        4.3.3.0 (2008/09/22) 検索結果を、"DB.ERR_CODE" キーでリクエストにセットする。
        4.3.3.0 (2008/09/22) 属性 stopError の設定により、JSP処理を中止するかどうかを制御します。
        4.3.5.7 (2009/03/22) アクセスカウント不具合対応
        6.3.4.0 (2015/08/01) caseKey,caseVal,caseNN,caseNull,caseIf 属性対応
        6.4.1.2 (2016/01/22) QueryTag.errMsgId → QueryTag.ERR_MSG_ID refactoring
        6.4.3.4 (2016/03/11) String配列 から、Setに置き換えます。

    - #### release2

          protected void release2()

      タグリブオブジェクトをリリースします。 キャッシュされて再利用されるので、フィールドの初期設定を行います。
      オーバーライド:
        `release2` クラス内 `QueryTag`
      変更履歴:

        2.0.0.4 (2002/09/27) カスタムタグの release() メソッドを、追加
        3.1.1.2 (2003/04/04) Tomcat4.1 対応。release2() を doEndTag()で呼ぶ。
        3.5.2.0 (2003/10/20) sysDBType 廃止。SYSARG は、システムパラメータ で定義します。
        5.5.5.2 (2012/08/10) isTableModelCommit追加

    - #### execute

          protected void execute(Query query)

      Query を実行します。
      オーバーライド:
        `execute` クラス内 `QueryTag`
      パラメータ:
        `query` - オブジェクト
      変更履歴:

        2.1.2.3 (2002/12/02) データベース更新時に、更新フラグをセットするように変更
        3.5.0.0 (2003/09/17) カラム名ではなく、カラム番号を先に求めておく方式に変更。
        3.5.2.0 (2003/10/20) 内部オブジェクトタイプ名を システムパラメータ で定義します。
        3.5.4.2 (2003/12/15) HTMLTableViewForm クラス名変更(⇒ ViewForm_HTMLTable)
        3.5.6.0 (2004/06/18) DBRowHeader のパッケージプライベート化に伴なう変更
        4.0.0.0 (2005/01/31) setArguments 廃止、Query#execute に、引数をすべて追加
        4.3.0.0 (2008/07/22) DBSysArgの引数に日付、PG、ユーザーIDを追加
        5.5.5.2 (2012/08/10) isTableModelCommitによるテーブルモデル確定処理のコントロール
        6.4.2.0 (2016/01/29) DateSet.getDate( String ) を利用するように修正します。

    - #### getParameterRows

          protected int[] getParameterRows()

      表示データの HybsSystem.ROW_SEL_KEY を元に、選ばれた 行を処理の対象とします。
      オーバーライド:
        `getParameterRows` クラス内 `CommonTagSupport`
      戻り値:
        選択行の配列
      変更履歴:

        4.0.0.0 (2005/01/31) getParameterRows() を使用するように変更

      このメソッドは、nullを返しません

    - #### setDbType

          public void setDbType(String type)

      【TAG】Queryオブジェクトに渡す引数のタイプ定義(例:type名_ARRAY)。
      パラメータ:
        `type` - 定義のPL/SQL名
      説明:

             ここでは、type 定義のPL/SQL名を指定します。
             行を表す配列は、type名_ARRAY という名称です。

    - #### setSelectedAll

          public void setSelectedAll(String all)

      【TAG】データを全件選択済みとして処理するかどうか[true/false]を指定します(初期値:false)。
      パラメータ:
        `all` - データを全件選択済み [true:全件選択済み/false:通常]
      説明:

             全てのデータを選択済みデータとして扱って処理します。
             全件処理する場合に、(true/false)を指定します。
             初期値は false です。

    - #### setQueryType

          public void setQueryType(String id)

      【TAG】Query を発行する為のクラスIDを指定します(<a href="/gf/jsp/DOC03/index.jsp?command=NEW&GAMENID=DOC03&VERNO=6.4.8.0&VALUENAME=queryType" target="CONTENTS">初期値:JDBCPLSQL</a>)。
      オーバーライド:
        `setQueryType` クラス内 `QueryTag`
      パラメータ:
        `id` - Queryを発行する為の実クラスID
      関連項目:
        `Queryのサブクラス`, `Query.execute( String ,String , DBSysArg[] , DBUserArg[] )`
      説明:

             引数指定のINSERT/UPDATE文を実行する場合の、queryType 属性を使用します。
             このタグでは、execute( String ,String , DBSysArg[] , DBUserArg[] )を実行します。
             代表的なクラスとして、"JDBCPLSQL" が標準で用意されています。

             タグにより使用できる/出来ないがありますが、これは、org.opengion.hayabusa.db
             以下の Query_**** クラスの **** を与えます。
             これらは、Query インターフェースを継承したサブクラスです。
             <a href="/gf/jsp/DOC03/index.jsp?command=NEW&GAMENID=DOC03&VERNO=6.4.8.0&VALUENAME=queryType" target="CONTENTS">Query_**** クラス</a>

      変更履歴:

        3.5.4.2 (2003/12/15) JavaDocコメント用にメソッド追加。

    - #### setTableModelCommit

          public void setTableModelCommit(String flag)

      【TAG】テーブルモデルに対する確定処理を行うかどうかを指定します(初期値:true)。
      パラメータ:
        `flag` - テーブルモデルの確定処理 [true:する/false:しない]
      説明:

             PlsqlUpdateタグで、エラーがなかった場合は通常、テーブルモデルの改廃に従って処理が行われます。
             （改廃Dについては削除処理を行い、その他については改廃を元に戻す）

             このパラメータをfalseに指定すると、テーブルモデルに対する処理を行いません。
             これは、例えばPL/SQLでエラーチェックのみを行いたい場合に有効です。
             初期値はtrue(処理を行う）です。

      変更履歴:

        5.5.5.2 (2012/08/10) 新規作成

    - #### toString

          public String toString()

      このオブジェクトの文字列表現を返します。 基本的にデバッグ目的に使用します。
      オーバーライド:
        `toString` クラス内 `QueryTag`
      戻り値:
        このクラスの文字列表現
      このメソッドは、nullを返しません

Webアプリケーションフレームワーク openGion
Copyright (c) 2009 The openGion Project.