我在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。
getRegionID
作为OracleTypes.NUMBER
传递给getByInt
proc吗?OracleTypes.INTEGER
传递给getByNum
,预计in number
吗?这可能看起来很简单,但我认为我不允许像这样修改参数。我希望那不是真的!
编辑:
OracleTypes.INTEGER
传递给procedure ... (param in number)
工作希望得到明确的答案,所以我可以让他们开始使用新的包装器,而不必担心无法预料的问题。
答案 0 :(得分:1)
INTEGER
是ANSI标准类型,Oracle describes作为NUMBER
的子类型为NUMBER(38)
。因此,只要没有小数部分,任何需要INTEGER
作为参数的地方都应该接受NUMBER
。