我有通过java.sql.CallableStatement调用MSSQL存储过程的代码,其行写为statemens,如:
{? = call ProcedureName(@par = ?)}
现在我需要重写它们以便能够调用Oracle存储过程。
是否有任何转换器或类似的东西可以帮助我克服手写重写?
我很高兴能够通用的方式独立于特定类型的DB调用存储过程或函数。
答案 0 :(得分:1)
我猜您调用存储过程并覆盖参数par的默认值?如果是这样,那么oracle的语法就是
{? = call ProcedureName(par => ?)}
(假设您的存储过程实际上是存储函数,因为它返回一个值)。
我不知道任何通用方法(但这并不意味着当然没有一种方法)在JDBC中使用命名表示法调用存储过程。你当然可以自己抽象存储过程调用例如(简化)一种方法,它接受存储过程的名称和传递给它的名称/值数组。根据目标数据库类型,在实现中使用oracle或特定于sql server的表示法。
欢呼声