326.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 结果。最后一个参数是 OUT 值,也是 INTEGER 类型。

在 SQL 术语中,存储的步骤可以声明为:

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

326.4.1. IN 参数

IN 参数取四个部分,用空格分开:参数名称、SQL 类型(扩展)、类型名称和值源。

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

SQL 类型是必需的,可以是整数(正数或负数)或引用某些类中的整数字段。如果 SQL 类型包含一个点,则组件会尝试解析该类并读取给定字段。例如,com.Foo.INTEGER 从类 com.Foo 的字段读取。如果类型不包含逗号,那么要解析整数值的类将为 java.sql.Types。类型可以通过扩展(如 DECIMAL (10))表示表示 scale 10 的 java.sql.Types.DECIMAL

类型名称是可选的,必须在引号(')之间给定。

值源是必需的。值源从 Exchange 填充参数值。它可以是简单表达式或标头位置,例如 ::#<header name>。例如,简单表达式 ${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 字段的 INTEGER 字段读取,并且扩展将设置为 10。参数的输入值从标题 "srcValue" 传递。

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

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

实际调用将通过 org.springframework.jdbc.core.SqlParameter 进行。

返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

Theme

© 2025 Red Hat