• 検索結果がありません。

演算子

ドキュメント内 WebDBtoolsユーザーズガイド (ページ 33-115)

第7章 WebScript言語

7.8 演算子

!:否定、-:符号変更、*:積、/:商、%:剰余、+:和、-:差

<,>,<=,>=,==,!=:数値比較記号、

lt,gt,le,ge,eq,ne:文字列比較記号

.:文字列結合

&&:and条件, ||:or条件, ( ):演算順序変更 例:

<!SETVAR animal ’"dog"’>

<!SETVAR count ’010’>

<!SETVAR count ’count+100’>

<INPUT TYPE="text" NAME="$animal$count" VALUE="snoppy">

<INPUT TYPE="text" NAME="dog110" VALUE="snoppy">

組込み関数

文字列、数学、リスト、時間、変数の定義判定、HTML表現などの関数があります。詳細は、“第8章 関数”を参照してくだ さい。

例:

<!SETVAR start '3'>

<!SETVAR len '2'>

<!SETVAR str '"abcdefghi"'>

<!SETVAR sstr 'substr( str, start, len )'>

<!REPLACE sstr>

制御構造

制御構造として以下のものがあります。詳細は、“第6章 WebScript拡張タグ”を参照してください。

<!IF>、<!ELSE>、<!ELSEIF>:条件判定文

<!FOR>、<!WHILE>、<!FOREACH>:条件ループ

<!BREAK>、<!CONTINUE>、<!THROW>、<!CATCH>、<!ABORT>:制御移動

データベース

<!DO>拡張タグは、データベースをSQL文およびRDBコマンドで処理し、結果を得る拡張タグです。検索時は実行結果

と結果データが、そのほかは実行結果が出力されます。

検索結果は、表イメージを2次元のリストに格納します。リストのキーには、列名が付けられています。

例:伝票表から「伝票番号」と「商品」を検索します。

<!DO "SELECT 伝票番号,商品 FROM STOCKS.伝票表" RESULT=r>

<TABLE>

<!FOREACH r t>

<TR>

<TD><!REPLACE t{伝票番号}</TD>

<TD><!REPLACE t{商品}</TD>

</TR>

<!/FOREACH>

</TABLE>

データベースのSQL文は、トランザクションにより実行されます。トランザクションには以下の機能があります。

- SQL実行時に、自動的にアクセスした範囲に排他制御(ロック)を行います。WebScript実行時は、Symfoware/RDB

のデフォルトのモードで排他制御が行われます。

- データベースの処理範囲に行われた排他制御は、トランザクションのCOMMIT、ROLLBACKのどちらかの命令 により解放されます。

- データベースの更新を伴う処理を行った結果は、COMMITかROLLBACKを実行した時点で決まります。COMMIT を実行した場合は、すべての更新結果が反映されます。ROLLBACKを行った場合は、すべての更新結果が反 映されません。

参照

排他制御については、“アプリケーション開発ガイド(埋込みSQL編)”の“排他制御”を参照してください。

WebScriptを利用してデータベースの処理を実行する場合は、以下のように処理を行う必要があります。

- <!DO>タグで、データベースの処理を行う命令を実行した場合は、フォーマットファイルの処理の終了までに、必ず

<!DO "COMMIT">, <!DO "ROLLBACK">によりトランザクションを終了させる必要があります。

- トランザクションを終了させる命令には、以下のタグもあります。

<!TRANSACTION "COMMIT"> ――― <!DO "COMMIT">と同じ

<!TRANSACTION "ROLLBACK"> ――― <!DO "ROLLBACK">と同じ

<!ABORT> ――― 本タグで、内部的に<!DO "ROLLBACK">が実行されます。

- 個別セションの場合は、複数のフォーマットファイルで一連の処理(トランザクション)を実行する場合があります。

この場合は、少なくとも、一連のフォーマットファイルの最後のフォーマットファイルで、必ず<!DO "COMMIT">,

<!DO "ROLLBACK">によりトランザクションを終了させる必要があります。

<!TRANSACTION>拡 張 タ グ は 、 ト ラ ン ザ ク シ ョ ン のCOMMITやROLLBACKを 実 行 す る 拡 張 タ グ で す 。<!

TRANSACTION>拡張タグは、トランザクション処理の拡張用機能であり、現在はそれぞれ、<!DO "COMMIT">、<!

DO "ROLLBACK">タグと同様に機能します。

拡張タグは、トランザクションをデータベースの操作用の と分けて、トランザクションの範囲を

WebScriptでは、データベースのアクセス結果を、ブラウザで表示可能なHTMLに変換します。結果は、データベースの 内容をテキスト形式に変換したものを、WebScriptのリスト変数に作成してHTMLに埋め込みます。

バイナリデータをBLOBから取り出す場合は、結果を画像に変換する機能により、HTMLに画像として埋め込みます。

数値・文字データ検索

数値、文字データの検索(バイナリ以外のデータ)については、データベースの結果をテキストに変換して、HTMLに埋 め込みます。

以下に、伝票番号と商品からなる伝票表から、数値データを取り出す場合の、フォーマットファイルの記述と処理の推移 を示します。

(1)利用者が開発したフォーマットファイルを読込み、データベースの検索処理(SQL文)を取り出します。

(2)取り出した拡張タグ命令のSQL文をデータベースサーバで実行し、結果を得ます。結果の集合を変数(r)に取り出

し、データベースのデータをテキスト形式に変換します。

(3) 取 り 出 し た 拡 張 タ グ 命 令 で 、 デ ー タ 取 出 し 処 理 (<!FOREACH>) を 実 行 し ま す 。 利 用 者 が 埋 込 み 命 令 (<!

REPLACE>)で指示した位置に、各列の検索結果を埋め込んだHTMLを作成し、ブラウザに返却します。

イメージデータの検索

バイナリデータ(BLOB型の列)については、データベースの結果を画像とみなし、検索結果を画像として処理できる形 式に変換し、HTMLに画像データとして埋め込みます。

以下に、BLOB型の列に会社外観というイメージデータを含む表を、会社表から会社外観のデータを取り出し、その結果を GIF形式で得る場合の、フォーマットファイルの記述と処理の推移を示します。

(1)利用者が開発したフォーマットファイルを読み込みます。

(2)結果は、拡張タグのないHTML形式に変換します。

(3)HTMLに変換された結果、WebScriptのwit_mediaコマンドに処理を依頼します。

(4)依頼の引数にあるSQL文から、対象のBLOB型の列のデータ検索を実行して、結果を受け取ります。

(5)wit_mediaコマンドの引数に渡されたイメージのタイプ(本例ではGIF)に応じて、結果をHTMLの画像データに変換

してブラウザに返します。

データベース処理のための拡張タグの処理

WebScriptは、データベース処理のために、データベースアクセスタグがあります。データベースアクセスタグでは、以下 の処理を行うことができます。

・ データベース構築のためのRDBコマンド

・ データベースの更新処理のためのSQL文

・ データベース定義処理のためのSQL文

・ トランザクションのためのSQL文

・ データベースの格納構造情報検索

データベースアクセスタグの利用方法の例を以下に示します。例では、伝票番号と商品からなる伝票表の定義、伝票表の

(1)拡張タグから処理するSQL文を取り出します。

(2)データベースサーバに、順次、SQL文の実行を依頼します。

(3)フォーマットファイルの実行結果をブラウザに通知します。

データベースの格納情報検索拡張タグは、データベースの定義結果を確認するためのものです。

格納構造情報の取得方法の例を以下に示します。例では、定義した伝票表のDSO名とタイプを取得しています。

(1)利用者が開発したフォーマットファイルを読み込み、格納構造情報を取り出します。

(2)取り出した拡張タグ命令のSQL文を、データベースサーバで実行し、結果を得ます。

結果の集合を、WebScript変数(r)に取り出します。データベースのデータはテキスト形式に変換されます。

(3)取り出した拡張タグ命令のデータ取出し処理(<!FOREACH>)を、実行します。検索結果の各行を処理して、利用者

が埋込み命令(<!REPLACE>)で指示した位置に、各列の値を埋め込んだものを作成します。この結果をHTMLに変換 して、ブラウザに返却します。

イントラネット内での利用

イントラネット内の利用者の特長は、以下のとおりです。

- 利用者は特定されるが、利用者数は業務により異なる

- ネットワークおよび業務に対してアカウントをもつ

- 利用者は、ある程度のモラルをもって、アクセスを守ることが期待できる(パスワードの保護は必要であるが、ネッ トワークの送信内容盗聴レベルの保護は必要ない場合が多い)

Webセキュリティは、Webサイトのドキュメント機密性の内容に応じた設定が必要です。利用者の管理には、一般的な Webレベルの、WebサーバのアクセスコントロールによるWebドキュメント保護が必要です。

この利用形態では、Webサーバ内のドキュメントアクセス管理の対策が必要です。ただし、情報の内容によって、この ような管理は必要ない場合もあります。

このような利用形態の場合、WebScriptのページは公開せず、業務ごとに利用者保護を行ってください。Webセキュリ ティの認証が正しい場合だけ、WebScriptセションを利用可能となるように運用してください。以下にこのイメージを示 します。

ローカルなネットワーク内での利用

ローカルな環境での利用者の特長は、以下のとおりです。

- 情報利用の関連者に特定される

- 対象ネットワークおよびWebサーバ環境にアカウントをもつ場合がある

- 利用者は特定され、ネットワークの送信内容盗聴レベルの保護は不要になる

このような利用形態の場合、利用者がユーザIDとパスワードをブラウザから動的に指定するWebScriptの運用も考え られます。以下にこのイメージを示します。

3.6 拡張タグの使用例

WebScriptのアプリケーションを作成する場合に役立つ、いくつかの使用例とその簡単な説明を紹介します。サンプルア プリケーションは、製品に添付されており、WebDBtoolsをインストールしたあとのディレクトリ中のsampleディレクトリにあり ます。

ここで説明しているサンプルアプリケーションは、次のデータベースの構造を対象としています。

・ スキーマ名:WL_SCHEMA

・ 表名:製品表

・ 表の構造:

製品名 VARCHAR(50) UNIQUE NOT NULL

カテゴリ VARCHAR(50)

機能 VARCHAR(100) 型番 VARCHAR(20) 数量 INTEGER

価格 INTEGER

説明 VARCHAR(500) 写真 BLOB(30K)

ドキュメント内 WebDBtoolsユーザーズガイド (ページ 33-115)