---
schema_version: "1"
id: 8350a93a4811e91361fdc97d12a5bd05f278989eb5d4ce36fb10745415473b80
title: Database Connector の例
collection: mulesoft
version: current
locale: ja-jp
portal_url: https://docs.salesforce.com/mulesoft/current/ja-jp/db-connector/1.10/database-connector-examples.md
canonical_url: https://docs.mulesoft.com/jp/db-connector/1.10/database-connector-examples
source_site: docs.mulesoft.com
content_type: documentation
content_hash: 8dae04f6a36b04f6f48a8f225f8830f76bc885b9ff49db24f366704d003d689d
description: MuleSoft Documentation Site
release: "1.10"
latest: false
---
# Database Connector の例

データベース用 Anypoint Connector (Database Connector) の例は、データベース接続の設定、データベースの照会、ストアドプロシージャーの実行、DDL ステートメントの実行、スクリプトの実行、データベーストランザクションの実行、一括操作の使用、カスタムデータ型の設定に役立ちます。

- [データベース接続の設定](https://docs.mulesoft.com/jp/db-connector/1.10/database-connector-connection)
    
    一般的なデータベースと汎用データベースの両方に接続します。また、グローバルデータソースへの接続、JDBC ドライバーの設定、接続プーリングの設定、TNS を使用した Oracle データベースへの接続を行うようにコネクタを設定します。
- [Mule Maven プラグインを使用したドライバー表示の設定](https://docs.mulesoft.com/jp/db-connector/1.10/database-connector-driver-configuration)
    
    Mule Maven プラグインを使用して、ドライバークラスの表示を適切に設定します。
- [データベースのクエリ](https://docs.mulesoft.com/jp/db-connector/1.10/database-connector-select)
    
    データベースからデータを照会する ​**Select**​ 操作を設定します。
- [データベースからの単一レコードのクエリ](https://docs.mulesoft.com/jp/db-connector/1.10/database-connector-query-single)
    
    MySQL データベースのテーブルから本の情報を取得する ​**Query single**​ 操作を Mule アプリケーション内で設定します。
- [データの挿入、更新、削除](https://docs.mulesoft.com/jp/db-connector/1.10/database-insert-update-delete)
    
    データを管理するように ​**Insert**​、​**Update**​、​**Delete**​ 操作を設定します。
- [ストアドプロシージャーの実行](https://docs.mulesoft.com/jp/db-connector/1.10/database-stored-procedure)
    
    `input`​、​`output`​、および ​`input-output`​ パラメーターを組み合わせる ​**Stored Procedure**​ 操作を設定します。また、ストアドプロシージャーの日付を設定します。
- [UDT を使用する Oracle ストアドプロシージャーのコール](https://docs.mulesoft.com/jp/db-connector/1.10/database-connector-udt-stored-procedure)
    
    UDT を入力および出力パラメーターとして使用する Oracle データベースストアドプロシージャーをコールする ​**Stored procedure**​ 操作を設定します。また、​`createStruct`​ および ​`createArray`​ DataWeave 関数を使用してアプリケーションデータをカスタム型にマップします。
- [DDL ステートメントの実行](https://docs.mulesoft.com/jp/db-connector/1.10/database-connector-execute-ddl)
    
    テーブルや他のデータ構造内のデータを作成または変更する DDL ステートメントを実行する ​**Execute DDL**​ 操作を設定します。
- [一括操作の実行](#execute-bulk-operations)​  
    各入力パラメーターが 1 つの値のみを取る場合に使用する ​**Bulk insert**​、​**Bulk update**​、​**Bulk delete**​ 操作を設定します。
- [スクリプトの実行](https://docs.mulesoft.com/jp/db-connector/1.10/database-execute-script)
    
    スクリプトを 1 つのステートメントとして実行する ​**Execute Script**​ 操作を設定します。
- [データベースのデータ型の設定](https://docs.mulesoft.com/jp/db-connector/1.10/database-configure-data-types)
    
    特定の接続プロバイダーに接続している場合に使用するカスタムデータ型を設定します。
- [データベーストランザクションの設定](https://docs.mulesoft.com/jp/db-connector/1.10/database-connector-transactions)
    
    データベース操作をトランザクションのコンテキストで実行します。

## [](#execute-bulk-operations)一括操作の実行

`insert`​、​`update`​、​`delete`​ 操作は、各入力パラメーターが 1 つの値のみを取る場合に使用できます。または、一括操作では、一連のパラメーター値を使用して 1 つのクエリを実行できます。

一括操作を実行すれば、不要なステップを回避して次の利点を得ることができます。

- クエリは 1 回のみ解析される。
- 実行されるステートメントは 1 つのみのため、必要なデータベース接続は 1 つのみである。
- ネットワークオーバーヘッドが最小限に抑えられる。
- RDBMS は一括操作をアトミックに実行できる。

このユースケースでは、コネクタは ​`<db:bulk-insert>`​、​`<db:bulk-update>`​、​`<db:bulk-delete>`​ の 3 つの操作を提供します。

これらの操作は、対応する単一操作と似ていますが、入力パラメーターをキー - 値のペアで受け取るのではなく、キー - 値のペアのリストとして受け取ることを想定しています。

次に例を示します。

```xml
<db:bulk-insert config-ref="dbConfig" >
  <db:bulk-input-parameters>
    #[[{'id': 2, 'name': 'George', 'lastName': 'Costanza'}, {'id': 3, 'name': 'Cosmo', 'lastName': 'Kramer'}]]
  </db:bulk-input-parameters>
  <db:sql>
    insert into customers (id, name, lastName) values (:id, :name, :lastName)
  </db:sql>
</db:bulk-insert>
```

一括操作を使用しない場合、​`delete`​ 操作の実行時に 1 つの条件 ​`(POSITION = X)`​ のみが提供されると、複数の行が条件に一致して削除される可能性があります。 同じ概念が更新にも適用されます。​`UPDATE PRODUCTS set PRICE = PRICE * 0.9 where PRICE > :price`​ を使用するときに、複数の商品に 10% 割引を適用したい場合でも、​`price`​ 入力パラメーターは 1 つの値のみを受け入れます。

価格の異なる商品に異なる割引率を適用するには、多くの操作を実行します。

次の例は、構造 ​`{ price : number, discountRate: number}`​ のオブジェクトのリストであるペイロードです。

```xml
<foreach>
  <db:update config-ref="dbConfig">
    <db:input-parameters>
     #[
      {
        'discountRate' : payload.discountRate,
        'price' : payload.price,
      }
    ]
    </db:input-parameters>
    <db:sql>
      UPDATE PRODUCTS set PRICE = PRICE * :discountRate where PRICE > :price
    </db:sql>
  </db:update>
</foreach>
```

前の操作ではタスクを遂行できますが、非効率的です。リストの要素ごとに、操作の各要素で 1 つのクエリを実行する必要があります。

- クエリが解析される。
- パラメーターが解決される。
- データベースへの接続が取得される (プールから接続を取得するか、新しい接続を確立する)。
- すべてのネットワークオーバーヘッドが支払われる。
- RBMS でクエリを処理し、変更を適用する。
- 接続が解放される。

いずれかの操作の実行中にエラーが発生した場合 (たとえば、100 行の一括挿入のうち 1 行の挿入に失敗した場合)、1 つの例外がスローされます。

一括操作の一部のステートメントは正常に実行できても、他のステートメントはエラーになる可能性があります。この場合、ドライバーが次のいずれかを実行します。

1. 実行をすぐに停止し、残りのすべての操作を無視する
2. 残りのステートメントの実行を続行する。

どちらの場合も、エラーが発生するたびにアプリケーションログを調べて、失敗の原因を確認できます。この場合、問題の原因を説明する 1 つの例外がスローされます。

## [](#関連情報)関連情報

[MuleSoft ヘルプセンター](https://help.mulesoft.com)