ODBC.INI ファイル (または同等のファイル) のデータソース情報を使用して、適切な ODBC ドライバを起動します。起動されたドライバは、指定された DBMS を特定し、指定されたコマンドを渡し、そのコマンドによって取り出されたデータを返します。
@DbCommand( "ODBC" : cache ; data_source ; user_ID1 : user_ID2 ; password1 : password2 ; command_string : null_handling )
"ODBC"
文字列引数。ODBC データソースにアクセスすることを示します。
cache
文字列引数。オプション。初回の検索では、"" または "NoCache" を指定します。 "" を指定した場合、次回の検索でも同じデータソースを検索する場合は、"ReCache" を指定できます。
文字列。アクセス対象の外部データソースの名前を指定します。データソースは、1 つ以上のデータベーステーブルの場所を表します。「データソースを指定する」を参照してください。
user_ID1 : user_ID2
文字列リスト。外部データベースに接続するために必要なユーザー ID を指定します。アクセスする DBMS によっては 2 つの ID が必要な場合があります。「ID とパスワードを指定する」を参照してください。
password1 : password2
文字列リスト。ユーザー ID に必要なパスワードを指定します。「ID とパスワードを指定する」を参照してください。
command_string
文字列。実行する SQL ステートメント、コマンドステートメント、プロシージャー名を指定します。「コマンド文字列を指定する」を参照してください。
null_handling
文字列。データを取り出すときの Null 値の扱い方を指定します。「Null の扱い方を指定する」を参照してください。
valuesFound
文字列、数値、日時、これらのデータ型のリスト。command_string によって返された値です。「戻り値にアクセスする」を参照してください。
データソース名は、最大 32 文字の英数字で指定します。
@DbCommand では、ODBC.INI ファイル (Windows 以外のプラットフォームの場合は同様のレジストリ) に登録済みのデータソースにアクセスできます。
これらの引数は、DBMS で必要な場合にのみ指定します。
ID を @DbCommand 式に保存する代わりに、Null 文字列 ("") を使用できます。ID が必要なときは、ユーザーに ID の入力を要求するプロンプトが表示されます。これは、自分の ID を他の設計者に見られたくない場合や、外部データにアクセスするときにユーザーに自分の ID を入力させたい場合に便利です。ただし、自動的に実行される式 (エージェントなど) には、必ず ID とパスワードを指定します。このような式は、情報の入力を要求しないからです。
データベースが開いたままのときは、データソースにアクセスするためのユーザー ID とパスワードの入力は、Domino のデータベースセッションごとに一度だけ必要です。ユーザーが Domino の別のデータベースを開いて同じデータソースにアクセスする式を実行する場合は、ユーザー ID とパスワードをもう一度入力する必要があります。
パスワードパラメータは、ID パラメータを指定した場合に限り必要となります。ID と同様に、パスワードを @DbColumn 式に保存することも、代わりに Null 文字列を使用してユーザーに入力させることもできます。データベースパスワードが Null の場合は、式から省略できます。
例えば、ID とパスワードを完全に指定する場合は、次のように入力します。
command_string には、次のいずれかを指定します。
日時の値は、Domino の形式ではなくデータベースの形式で入力する必要があります。例えば、DB2/2 の場合は 1996-01-31-12:00:00 ではなく 1996-01-31-12.00.00 を使用します。
Null 値の処理を制御するには、次のオプションを 1 つ指定し、コロンを付けて command_string パラメータに追加します。
Null values found - canceling @Db function
メッセージだけでデータは返されません。
Caution: NULL values discarded from @Db list.
@DbCommand 式を実行したときに値が置換された場合は、ステータスバーに次のメッセージが表示されます。
Caution: NULL value replaced with user-defined value in @Db list.
通常、置換する値にはリストにありそうにない有効な値を指定します。例えば、列が文字列の場合は、置換する値として「***」を指定すれば、置換された値を簡単に見つけられます。
@DbCommand は、64KB を超えるデータを返すことはできません。次の公式を使用して、@DbCommand で返されるデータ量を求めます。
2 + (2 * 返されるエントリ数) + 全エントリの合計文字列サイズ
各文字列は 511 バイトに制限されています。文字列が 1 つだけ返される場合は、64KB に制限されます。
(10 * 返されるエントリ数) + 6
ユーザーの NOTES.INI ファイルに次のステートメントが含まれている場合は、
NoExternalApps=1
@DbCommand 式は無効になります。この場合、式が失敗するだけでエラーメッセージは表示されません。
@DbCommand は、不等号の関係 (より小さいなど) を調べる場合や、複数の条件を同時に調べる場合に便利です。@DbCommand を使用するには、コマンドを処理用のバックエンドデータベースに渡します。
例えば、次のようなレコードのデータを返すものとします。
BALANCE >= 1000.00 and DAYS_OVERDUE > 30
この場合、選択ステートメントを SQL で記述し、次に @DbCommand を使用してそのステートメントを DBMS に渡し、処理を行います。要求したデータが @DbCommand から返されます。
Web アプリケーションでこの関数を使用する場合は、次の構文のみが可能です。
@DbCommand("Domino";"ViewNextPage")
または
@DbCommand("Domino";"ViewPreviousPage")
これによって、ビューの次または前のページへのリンクが作成されます。Web アプリケーションでは、これ以外の場所では @DbCommand は使用できません。
@DbCommand("ODBC";"PUBLISHERS";"dbo":"";"vanilla":"";
"SELECT au_lname FROM dbo.authors WHERE contract=1 AND state='CA' ")