320.3. ストアドプロシージャーテンプレートの宣言


テンプレートは、Java メソッドシグネチャーに似た構文を使用して宣言されます。ストアドプロシージャーの名前と、括弧で囲まれた引数。例はこれをよく説明しています:

Copy to Clipboard Toggle word wrap
<to uri="sql-stored:STOREDSAMPLE(INTEGER ${headers.num1},INTEGER ${headers.num2},INOUT INTEGER ${headers.num3} result1,OUT INTEGER result2)"/>

引数は型によって宣言され、単純な式を使用して Camel メッセージにマッピングされます。したがって、この例では、最初の 2 つのパラメーターは INTEGER 型の IN 値であり、メッセージヘッダーにマップされます。3 番目のパラメーターは INOUT です。これは、INTEGER を受け入れてから別の INTEGER 結果を返すことを意味します。最後のパラメーターは OUT 値で、これも INTEGER 型です。

SQL 用語では、ストアドプロシージャーは次のように宣言できます。

Copy to Clipboard Toggle word wrap
CREATE PROCEDURE STOREDSAMPLE(VALUE1 INTEGER, VALUE2 INTEGER, INOUT RESULT1 INTEGER, OUT RESULT2 INTEGER)

320.3.1. IN パラメーター

IN パラメーターは、スペースで区切られた 4 つの部分 (パラメーター名、SQL 型 (位取りあり)、型名、および値のソース) を取ります。

パラメーター名はオプションであり、指定されていない場合は自動生成されます。引用符 (') の間に指定する必要があります。

SQL タイプは必須であり、整数 (正または負) または一部のクラスの整数フィールドへの参照にすることができます。SQL 型にドットが含まれている場合、コンポーネントはそのクラスを解決して、指定されたフィールドを読み取ろうとします。たとえば、SQL 型 com.Foo.INTEGER は、クラス com.Foo のフィールド INTEGER から読み取られます。型にコンマが含まれていない場合、整数値を解決するクラスは java.sql.Types になります。型は位取りによって接尾辞を付けることができます。たとえば、DECIMAL(10) は位取り 10 の java.sql.Types.DECIMAL を意味します。

型名はオプションで、引用符 (') で囲む必要があります。

値のソースが必要です。値のソースは、Exchange からパラメーター値を取り込みます。Simple 式またはヘッダーの場所、つまり :#<header name>. のいずれかです。たとえば、Simple 式 ${header.val} は、パラメーター値がヘッダー val から読み取られることを意味します。ヘッダー位置式 :#val は同じ効果があります。

Copy to Clipboard Toggle word wrap
<to uri="sql-stored:MYFUNC('param1' org.example.Types.INTEGER(10) ${header.srcValue})"/>

URI は、ストアドプロシージャーがパラメーター名 param1 で呼び出されることを意味します。その SQL タイプはクラス org.example.Types フィールド INTEGER から読み取られ、スケールは 10 に設定されます。パラメーターの入力値は、ヘッダー srcValue から渡されます。

Copy to Clipboard Toggle word wrap
<to uri="sql-stored:MYFUNC('param1' 100 'mytypename' ${header.srcValue})"/>

URI は、SQL-type が 100 で型名が mytypename であることを除いて、前と同じです。

実際の呼び出しは org.springframework.jdbc.core.SqlParameter を使用して行われます。

320.3.2. OUT パラメーター

OUT パラメーターは IN パラメーターと同様に機能し、SQL 型 (位取り付き)、型名、および出力パラメーター名の 3 つの部分を含みます。

SQL タイプは、IN パラメーターと同じように機能します。

タイプ名はオプションであり、IN パラメーターと同じように機能します。

出力パラメーター名は、OUT パラメーター名と、結果が格納されるヘッダー名に使用されます。

Copy to Clipboard Toggle word wrap
<to uri="sql-stored:MYFUNC(OUT org.example.Types.DECIMAL(10) outheader1)"/>

URI は、OUT パラメーターの名前が outheader1 であり、結果がヘッダー outheader1 になることを意味します。

Copy to Clipboard Toggle word wrap
<to uri="sql-stored:MYFUNC(OUT org.example.Types.NUMERIC(10) 'mytype' outheader1)"/>

これは前のものと同じですが、タイプ名は mytype になります。

実際の呼び出しは org.springframework.jdbc.core.SqlOutParameter を使用して行われます。

320.3.3. INOUT パラメーター

INOUT パラメーターは、上記のすべての組み合わせです。エクスチェンジから値を受け取り、結果をメッセージヘッダーとして保存します。唯一の注意点は、IN パラメーターの名前がスキップされることです。代わりに、OUT パラメーターの名前は、SQL パラメーター名と結果ヘッダー名の両方を定義します。

Copy to Clipboard Toggle word wrap
<to uri="sql-stored:MYFUNC(INOUT DECIMAL(10) ${headers.inheader} outheader)"/>

Actual call will be done using org.springframework.jdbc.core.SqlInOutParameter.

トップに戻る
Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。 最新の更新を見る.

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

Theme

© 2025 Red Hat, Inc.