【发布时间】:2019-12-22 20:33:29
【问题描述】:
我们有一个具有多个过程签名的 Oracle DB。它们每个都有 6 个参数,但在签名的每个变体中,最后一个参数是不同的类型。
例如,在一种变体中,最后一个参数是 clob,在另一种变体中是 varchar。
在执行过程之前,我们会查找过程的列
rs = conn.getMetaData().getProcedureColumns(packageName, schema, procedureName, "%");
此调用始终只返回过程的一种表示形式的列。这是有问题的,因为我们使用该响应中的列来最终在执行之前将参数加载到可调用语句中。我们这样做是为了获得参数范围(输入、返回等)。如果元数据提取提取了最后一个参数是字符串的变体,但我们实际上是在尝试使用 clob 执行那个变体,那么它会出错,因为它试图执行过程的错误变体。
【问题讨论】:
标签: java oracle stored-procedures jdbc metadata