Oracle过程参数定义为.NUMBER,可以将其作为.INTEGER传递

时间:2012-07-16 07:14:04

标签: oracle jdbc

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

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

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

public Integer getRegionID() {
    return 100;
}

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

  1. 您可以将getRegionID作为OracleTypes.NUMBER传递给getByInt proc吗?
  2. 您可以将其OracleTypes.INTEGER传递给getByNum,预计in number吗?
  3. 另一种神奇的方式?
  4. 这可能看起来很简单,但我认为我不允许像这样修改参数。我希望那不是真的!

    编辑:

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

    希望得到明确的答案,所以我可以让他们开始使用新的包装器,而不必担心无法预料的问题。

1 个答案:

答案 0 :(得分:1)

INTEGER是ANSI标准类型,Oracle describes作为NUMBER的子类型为NUMBER(38)。因此,只要没有小数部分,任何需要INTEGER作为参数的地方都应该接受NUMBER