327.4. 声明存储的步骤模板


模板通过与 Java 方法签名类似的语法进行声明。存储的流程的名称,然后是用括号括起的参数。解释了这个示例:

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

参数由类型声明,然后使用简单表达式映射到 Camel 消息。因此,在这个示例中,前两个参数是 INTEGER 类型的 IN 值,映射到消息标头。第三个参数是 INOUT,表示它接受 INTEGER,然后返回不同的 INTEGER 结果。last 参数是 OUT 值,也是 INTEGER 类型。

在 SQL 术语中,存储的流程可以声明为:

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

327.4.1. IN 参数

IN 参数采用以空格号分隔的四个部分:参数名称、SQL 类型(缩放)、类型名称和值源。

参数名称是可选的,如果未提供,则会自动生成。它必须在 quotes (')之间指定。

SQL 类型是必需的,可以是整数(正数或负数)或引用某些类中的整数字段。如果 SQL 类型包含点,则组件会尝试解析该类并读取给定字段。例如,SQL 类型 com.Foo.INTEGER 从类 com.Foo 的字段 INTEGER 读取。如果类型不包含逗号,则用于解析整数值的类将是 java.sql.Types。类型可以通过缩放来 postfixed,如 DECIMAL (10)意味着 java.sql.Types.DECIMAL 带有 scale 10。

类型名称是可选的,必须在 quotes (')之间指定。

值源是必需的。值源从 Exchange 填充参数值。它可以是简单表达式或标头位置,例如 :#<header name& gt;。例如,简单表达式 ${header.val} 表示该参数值将从标题"val"中读取。标头位置表达式 :#val 的作用相同。

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

URI 表示将以参数名"param1"调用,它的 SQL 类型是从类 org.example.Types 和 scale 的字段 INTEGER 读取的。参数的输入值从标头 "srcValue" 传递。

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

URI 与之前 上的 URI 相同,但 SQL-type 为 100,类型名称为 "mytypename"。

实际调用将使用 org.springframework.jdbc.core.SqlParameter 来完成。

327.4.2. OUT 参数

OUT 参数的工作方式类似,并包含三个部分:SQL 类型(带有 scale)、类型名称和输出参数名称。

SQL 类型的工作方式与 IN 参数相同。

类型名称是可选的,还可与 IN 参数相同。

输出参数名称用于 OUT 参数名称,以及存储结果的标头名称。

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

URI 表示 OUT 参数的名称为 "outheader1",结果将是标头 "outheader1"。

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

这与前一个相同,但类型名称为 "mytype"。

实际调用将使用 org.springframework.jdbc.core.SqlOutParameter 来完成。

327.4.3. INOUT 参数

INOUT 参数是以上所有参数的组合。它们从交换接收值,并存储结果作为消息标头。唯一的注意事项是跳过 IN 参数的"name"。相反,OUT 参数的"name"同时定义了 SQL 参数名称以及结果标头名称。

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

实际调用将使用 org.springframework.jdbc.core.SqlInOutParameter 来完成。

返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2025 Red Hat