DBEXECUTE
DBEXECUTE は、オンプレミス環境およびクラウド環境での Infor 商用アプリケーションのみでサポートされています。Infor クラウドのカスタムレポートでは、DBEXECUTEFIXED のみがサポートされています。
リレーショナルデータベースからの値の読み取り、既存の値の更新、および新規の値の挿入ができます。DBEXECUTE は、リストを介さず、データベースを直接処理します。このため、RWDB 関数とは異なり、データベースに行を挿入できます。DBEXECUTE 式のパラメーターは SQL ステートメントです。
DBEXECUTE 関数は、データベースに 0、Null、空の文字列を書き込める 4 つのキーの組み合せをサポートします。
- DEL: 0 を書き込みます
- CTRL+DEL: NULL を書き込みます
- BACKSPACE: 空白文字列 ("") を書き込みます
- CTRL+BACKSPACE: 空白文字列 ("") を書き込みます
構文
DBEXECUTE 式には、これらのパラメーターがあります。
- データベース名: d/EPM Administration で定義されたリレーショナルデータ接続を指定します。
- SELECT ステートメント: データベースからデータを取得するために使用します。標準の SQL SELECT コマンドです。新しい値の入力時は、既存の値が更新されます。既存の値がない場合は、INSERT ステートメントが使用されます。データベースに書き戻すには、クエリは主キーを参照する必要があります。SQL SELECT では、複数の値を行から返せますが、DBEXECUTE 最初を除くすべてを無視します。したがって、主キーではない値を返し、書き戻すには、主キーが、ステートメントによって要求された最初の値ではないことを確認してください。
- INSERT ステートメント: データベースに新しいデータを入力する方法を指定します。標準の SQL INSERT コマンドです。
?
が使用できます。INSERT ステートメントの文字です。これは、DBEXECUTE で現在のセルに入力された最後の値を表します。
例
この例では、productid
は主キーです。
=DBEXECUTE("data_connection", "SELECT productid,FROM products WHERE
productid=123","INSERT INTO products VALUES(’123’,?)")
SELECT ステートメントは、DBEXECUTE 関数が処理されるたびに実行されます。たとえば、レポート内に表示する場合、他の数式のパラメーターとして使用する場合、アクション内で使用する場合などです。これに対し、INSERT ステートメントは、セルに値が入力されており、値がデータベースに存在しない場合にのみ実行されます。この機能は、アクションを使用して DBEXECUTE を実行し、データベースにデータを挿入する場合、または他の SQL コマンドを実行する場合に使用できます。
例
この例では、productid
は主キーです。参照された製品 ID は、rv_prod というレポート変数に保有します。
=DBEXECUTE("data_connection", "SELECT productid, FROM products WHERE
productid="&Reportvariables.rv_prod.text,"INSERT INTO products VALUES(’123’,?)")
アクション内の DBEXECUTE
アクションによって実行される DBEXECUTE 式内で INSERT ステートメントまたはその他の SQL コマンドを実行する場合、SELECT ステートメントの代わりに INSERT ステートメントを使用します。
例
=DBEXECUTE("data_connection", "INSERT INTO products VALUES (’123’,’[a
value]’)","")