0

我在 oracle 中有两个过程,它们以不同的方式定义参数,即使基础数据是相同的。在代码中,我们将其表示为整数。

procedure GetByNum(..., vRegionID in number, ...)
procedure GetByInt(...., vRegionID in integer, ...)

在 java 中,我们总是将字段定义为整数(在 db 中也是如此)

public Integer getRegionID() {
    return 100;
}

有没有办法将这个(在java中)传递integer给使用相同的两个程序OracleTypes.*?我们使用自定义的基本包装器org.springframework.jdbc.object.StoredProcedure来调用它们。目前不允许修改存储过程,所以剩下的就是修复java。

  1. 你能通过procgetRegionID吗?OracleTypes.NUMBERgetByInt
  2. 你能把它传递OracleTypes.INTEGERgetByNum哪个期望in number吗?
  3. 另一种神奇的方式?

这可能看起来很简单,但我认为我不允许像这样破坏参数。我希望那不是真的!

编辑:

  • 用于传递OracleTypes.INTEGERprocedure ... (param in number)工作
  • 不知道这是否只是特定于环境的

希望有一个明确的答案,这样我就可以让他们开始使用新的包装器,而不必担心无法预料的问题。

4

1 回答 1

1

INTEGER是 ANSI 标准类型,Oracle 将其描述NUMBER为as的子类型NUMBER(38)。因此,只要没有小数部分,任何将 aINTEGER作为参数的地方也应该接受 a 。NUMBER

于 2012-07-16T13:27:51.617 回答