ExecuteStoreProcedure
通过配置IN、OUT、IN/OUT参数配置,并使用Groovy SQL引擎调用数据库的存储过程。
IN和IN/OUT,须提供参数的值,同时支持表达式。
类型表
类型对应于Groovy的SQL参数类型(groovy.sql.Sql), 也是对应Java的SQL类型(java.sql.Types).
其中类型号,可能与Java SQL的类型号不同,比如BIT在Java中是-7, CLOB 为2005.
类型 | 类型号 | 对应Java对象 | 说明 |
---|---|---|---|
BIT | 0 | Boolean | 当不是1也不是t或true时,则返回false |
BOOLEAN | 1 | Boolean | 布尔。非true,返回false |
SMALLINT | 2 | Short | 短整型。非整数数字,解析将报错 |
INTEGER | 3 | Integer | 整型。非整数数字,解析将报错 |
BIGINT | 4 | Long | 长整型。非长整数数字,解析将报错 |
REAL | 5 | Float | 浮点数。非数字,解析报错 |
FLOAT | 6 | Double | 浮点数。非数字,解析报错 |
DOUBLE | 7 | Double | 双精度浮点数。 非数字,解析报错 |
DECIMAL | 8 | BigDecimal | 数字。 非数字,解析报错 |
NUMERIC | 9 | BigDecimal | 数字。 非数字,解析报错 |
DATE | 10 | java.sql.Date | 日期。根据参数的日期格式来格式化日期。&1 |
TIME | 11 | java.sql.Time | 时间。 根据参数的时间格式来格式化时间。&2 |
TIMESTAMP | 12 | java.sql.Timestamp | 时间戳. 根据参数的时间格式来格式化时间戳。&3 |
BINARY | 13 | java.io.ByteArrayInputStream | 二进制数据 &4 |
VARBINARY | 14 | java.io.ByteArrayInputStream | 可变长小二进制数据 &4 |
LONGVARBINARY | 15 | java.io.ByteArrayInputStream | 可变长大二进制数据 &4 |
CHAR | 16 | String | 字符。 不处理,直接使用字符串 |
VARCHAR | 17 | String | 字符串。 不处理,直接使用字符串 |
LONGVARCHAR | 18 | String | 长字符串。 不处理,直接使用字符串 |
CLOB | 19 | java.io.StringReader | 字符大对象。直接将字符串封装为字符串流 |
ARRAY | 20 | 数组 | |
BLOB | 21 | 字节大对象 | |
DATALINK | 22 | ||
DISTINCT | 23 | ||
JAVA_OBJECT | 24 | Java对象 | |
NULL | 25 | 空 | |
OTHER | 26 | 其他 | |
REF | 27 | ||
STRUCT | 28 | 结构 | |
TINYINT | 29 | Byte | 非整数数字,解析将报错 |
- &1 如果没有设置日期格式,则先匹配参数设置值,如果是数字,则按毫秒数转换为日期;否则按默认日期格式
yyyy-MM-dd
格式解析为日期。如果设置了日期格式,则使用LocalDate来解析。 - &2 如果没有设置时间格式,则先匹配参数设置值,如果是数字,则按毫秒数转换为时间;否则按默认时间格式
HH:mm:ss.SSS
格式解析。如果设置了时间格式,则使用LocalDateTime来解析。 - &3 如果没有设置时间格式,则先匹配参数设置值,如果是数字,则按毫秒数转换为时间戳;否则按默认时间格式
yyyy-MM-dd HH:mm:ss.SSS
格式解析。如果设置了时间格式,则使用Date来解析。 - &4 如果设置格式为
base64
, 则将字符串按BASE64解析为字节数组byte[]。如果设置hex
,则字符串按16进制字符串解析为字节数组。如果没设置或设置为ascii
,则字符串直接按ASCII编码获得字节数组。除此之外,将报错。
时间日期格式
当参数为时间或日期时,可自定义格式设置。
也可使用内置的格式:
名字 | 匹配示例 | 说明 |
---|---|---|
BASIC_ISO_DATE | 20190319 | |
ISO_LOCAL_DATE | 2019-03-19 | |
ISO_OFFSET_DATE | 2019-03-19+10:00 | |
ISO_DATE | 2019-03-19 或 2019-03-19+10:00 | 自由匹配二种格式 |
ISO_LOCAL_TIME | 10:15 或 10:15:30 | 自由匹配二种格式 |
ISO_OFFSET_TIME | 10:15+01:00 或 10:15:30+01:00 | 自由匹配二种格式 |
ISO_TIME | 10:15 或 10:15:30 或 10:15:30+01:00 | 自由匹配二种格式 |
ISO_LOCAL_DATE_TIME | 2019-03-19T10:15:30 | |
ISO_OFFSET_DATE_TIME | 2019-03-19T10:15:30+01:00 | |
ISO_ZONED_DATE_TIME | 2019-03-19T10:15:30+01:00[Asia/Shanghai] | |
ISO_DATE_TIME | 2019-03-19T10:15:30 或 2019-03-19T10:15:30+01:00 或 2019-03-19T10:15:30+01:00[Asia/Shanghai] | 自由匹配三种格式 |
ISO_ORDINAL_DATE | 2019-337 | 2019年的第几天 |
ISO_WEEK_DATE | 2019-W48-6 | 2019年的第几周的星期几 |
ISO_INSTANT | 2019-03-19T10:15:30Z | |
RFC_1123_DATE_TIME | Tue, 3 Jun 2019 11:05:30 GMT |
注意事项
- 目前已知的,由于Oracle原生不支持boolean类型,所以存储过程中也不会有boolean类型,通用的做法是number(1)和char(1)的方式来处理。