db_disconnect()
(SSM内部使用関数)getlist($$$)
getvalue($$$)
prepare_table_value($$$)
get_dbh()
gen_unique_key($number)
postgres_escape($)
Ssm::Db - ssm2対応 データベース関連モジュール
$Id: Ssm-Db1_25.html,v 1.2 2018/08/12 23:34:55 sugu Exp $ Please do 'perldoc -t Ssm::Common' if you get MOJIBAKE.
<SSM FUNCTION="Ssm::Db::getvalue" MODE="begin" TABLE="CONTACT" CONDCOLUMN="keycolumn" COND_INPUT_NAME="key"> <P>keycolumn の 値は %_keycolumn_% です。</P> <SSM MODE="end">
etc...
ミドルウェアSSM用のデータベース関連モジュールです。対応しているのは ssm2 です。 主として、テンプレート中のSSMタグで指定し、データベース内のデータを表示するのに使用します。
関数内では、ssm2(実行ファイル)で定義するパッケージ main または Ssm::Config 内の変数を使用します。
db_disconnect()
(SSM内部使用関数)
getlist($$$)
データを選択するテーブル名またはビュー名。必須属性。 以下のようにクエリー内で使用される。 SLECT [COLUMNS] from [TABLE] (条件式)
データを選択するテーブルまたはビュー内のカラム名。必須属性。 以下のようにクエリー内で使用される。 SLECT [COLUMNS] from [TABLE] (条件式)
カンマ区切で複数指定可。クエリー内でそのままの文字列が使用される。
クエリーの条件がある場合に、WHERE 句から指定する。非必須。
書き出すリストがセレクタ(<OPTION>)、ラジオボタン、チェックボックスの いずれかの場合に、送信されたフォーム項目の内容をデフォルトの 選択状態として反映させるかを指定。非必須。
(反映させる場合、SSMタグに挟む文字列に、 一定の文字列を指定しておく必要がある。 詳細は「機能」の項の指定方法を参照。)
書き出すリストがセレクタ(<OPTION>)の場合で、かつ、 送信されたフォーム項目の内容をデフォルトの選択状態として 反映させる場合(PARSE_SELECTEDに真の値を指定した場合)に、 そのセレクタ名を指定。
PARSE_SELECTEDに真の値を指定した場合は必須属性。 指定しないと、PARSE_SELECTEDに真の値を指定しても 選択状態は反映されない。
真の値を指定すれば、関数が呼ばれた時に毎回新しい接続を作成して処理を行い、処理が終了したら接続を切断する。 指定しないか偽の値を指定すれば、同一セッション内で作成された接続があればそれを使用して処理を行う。
RESULTVALUE属性を指定すると、結果出力を名前が __(指定された文字列)__ のクエリ変数に格納する。 (名前は、指定された文字列の前後にアンダースコア2つずつ。) 指定しなければ、標準出力に print する(標準の動作)。 非必須。
<SELECT NAME="contact_group_id"> <SSM FUNCTION="getlist" MODE="begin" TABLE="CONTACT_GROUP" COLUMNS="contact_group_id,description" PARSE_SELECTED="1" COND="WHERE mode=1" SELECTNAME="contact_group_id"> <OPTION VALUE="%_contact_group_id_%" %_selected_%>%_description_%</OPTION> <SSM MODE="end"> </SELECT>
文字列 %_selected_% は、選択状態を反映させるときに、「selected」という 文字列と置換させる位置に指定しておく。
PARSE_SELECTEDを指定しなかった場合に文字列 %_selected_% が指定してあっても、 エラーにはなない。
<SSM FUNCTION="getlist" MODE="begin" TABLE="URGENCY" COLUMNS="urgency_id,description" PARSE_SELECTED="1"> <INPUT TYPE="radio" NAME="urgency_id" VALUE="%_urgency_id_%" %_selected_%> %_description_% <SSM MODE="end">
文字列 %_selected_% は、選択状態を反映させるときに、「checked」という 文字列と置換させる位置に指定しておく。
PARSE_SELECTEDを指定しなかった場合に文字列 %_selected_% が指定してあっても、 エラーにはなない。
<SSM FUNCTION="getlist" MODE="begin" TABLE="GROUP_MASTER" COLUMNS="group_id,group_name" HIDE_ERROR="2"> <input type="checkbox" name="group_id" value="%_group_id_%" %_selected_%> [%_group_id_%] %_group_name_% <SSM MODE="end">
文字列 %_selected_% は、選択状態を反映させるときに、「checked」という 文字列と置換させる位置に指定しておく。
PARSE_SELECTEDを指定しなかった場合に文字列 %_selected_% が指定してあっても、 エラーにはなない。
getvalue($$$)
引き出す値(カラム)は、SSMタグで挟む文字列内に、'%_' と '_%' で挟んで指定する。
'%_' と '_%' で挟まれた文字列と同一のカラム名がない場合、エラーとなる。
指定された条件で複数のローが検索された場合、すべてのローの値を繰り返し書き出す。
データを選択するテーブル名またはビュー名。必須属性。 以下のようにクエリー内で使用される。 SLECT (カラム名) from [TABLE] (条件式)
クエリーの条件がある場合に、WHERE 句から指定する。非必須。
CONDCOLUMN も指定してある場合、CONDCOLUMN によって指定される 条件全体との AND 検索となる。
COND以外に、送信された値を条件式を指定したい場合に、 条件にするカラム名を指定する。非必須。 複数指定不可。
COND_INPUT_NAME が指定されていた場合は、その指定された名前(NAME)の 送信値が、指定されていなければ、CONDCOLUMN と同じ名前の送信値が 条件として使用される。 送信値が複数ある場合は、OR 検索となる。
COND も指定してある場合、COND の条件との AND 検索となる。
CONDCOLUMN を指定した時に、CONDCOLUMN 以外の名前の送信値を条件として 使用する場合にその名前(NAME)を指定する。非必須。
真の値を指定すれば、関数が呼ばれた時に毎回新しい接続を作成して処理を行い、処理が終了したら接続を切断する。 指定しないか偽の値を指定すれば、同一セッション内で作成された接続があればそれを使用して処理を行う。
RESULTVALUE属性を指定すると、結果出力を名前が __(指定された文字列)__ のクエリ変数に格納する。 (名前は、指定された文字列の前後にアンダースコア2つずつ。) 指定しなければ、標準出力に print する(標準の動作)。 非必須。
<TABLE> <SSM FUNCTION="getvalue" MODE="begin" TABLE="userdata" COND="mode=1" CONDCOLUMN="login_id" COND_INPUT_NAME="target_id" HIDE_ERROR="2"> <TR> <TD>%_login_id_%</TD> <TD>%_name_%</TD> <TD>%_company_%</TD> <TD>%_address_%</TD> </TR> <SSM MODE="end"> </TABLE>
SELECT login_id, name, company, address FROM userdata WHERE mode=1 AND (login_id = 1 OR login_id = 2)
prepare_table_value($$$)
COLUMNSで指定したカラム名が指定したテーブル(またはビュー)上に無い場合、エラーとなる。
指定された条件で複数のローが検索された場合、 最初のローの値のみをクエリーオブジェクト内に代入する。
通常は、1件のみ検索されることが想定される条件を指定し、 指定した条件の値をページ上に表示する目的で使用することを想定している。
複数のSSMタグを指定することにより、 1つのページ内で表示する値を複数のテーブル(またはビュー)から選択 することができる。
1つのページ内で表示する値を1つのテーブル(またはビュー)から取得出来る場合は、 getvalue()を代わりに使用することができる。
データを選択するテーブル名またはビュー名。必須属性。 以下のようにクエリー内で使用される。 SLECT [COLUMNS] from [TABLE] (条件式)
データを選択するテーブルまたはビューのカラム名。非必須。 以下のようにクエリー内で使用される。 SLECT [COLUMNS] from [TABLE] (条件式)
カンマ区切で複数指定可。クエリー内でそのままの文字列が使用される。
指定しない場合、すべてのカラム(*)が選択対象となる。
クエリーの条件がある場合に、WHERE 句から指定する。非必須。
CONDCOLUMN も指定してある場合、CONDCOLUMN によって指定される 条件全体との AND 検索となる。
COND以外に、送信された値を条件式を指定したい場合に、 条件にするカラム名を指定する。非必須。 複数指定不可。
COND_INPUT_NAME が指定されていた場合は、その指定された名前(NAME)の 送信値が、指定されていなければ、CONDCOLUMN と同じ名前の送信値が 条件として使用される。 送信値が複数ある場合は、OR 検索となる。
COND も指定してある場合、COND の条件との AND 検索となる。
CONDCOLUMN を指定した時に、CONDCOLUMN 以外の名前の送信値を条件として 使用する場合にその名前(NAME)を指定する。非必須。
真の値を指定すれば、関数が呼ばれた時に毎回新しい接続を作成して処理を行い、処理が終了したら接続を切断する。 指定しないか偽の値を指定すれば、同一セッション内で作成された接続があればそれを使用して処理を行う。
<SSM FUNCTION="prepare_table_value" MODE="begin" TABLE="PERSONAL_DATA" COND="WHERE mode = 0" CONDCOLUMN="login_id" COLUMNS="name"> <SSM MODE="end"> <SSM FUNCTION="prepare_table_value" MODE="begin" TABLE="LOGIN_MASTER" COND="WHERE mode = 0" CONDCOLUMN="login_id" COLUMNS="login_name"> <SSM MODE="end"> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <HTML> ...(略) <BODY> <SSM ACTION="once" FUNCTION="Ssm::Common::printvalue" MODE="begin"> <FORM ACTION="next.cgi" METHOD="post"> <input type="hidden" name="login_id" value="%_login_id_%"> <input type="hidden" name="login_name" value="%_login_name_%"> <input type="hidden" name="name" value="%_name_%"> </FORM> <SSM MODE="end">
get_dbh()
gen_unique_key($number)
引数が 5〜30 の範囲で無い場合、15桁の文字列を返す。
postgres_escape($)
正規表現の検索文字列を作成する時など、DBI モジュールで提供する quote 関数が使えない場合の使用を想定。
Miyabiko INOUE <miy@web-ware.org> バグ等の御連絡は mailto:miy@web-ware.org までお願いいたします。
Copyright (c) Miyabiko INOUE <miy@web-ware.org>. All rights reserved.
このモジュールは無償でご利用いただけます。 改変、再配布などの使用許諾に関しては、Perl の Artistic License を適用します。
This program is free software; you can redistribute it and/or modify it under Perl Artistic License.
Further information: http://www.web-ware.org/
perl(1).