如何在Java中打印默认值而不在Oracle Function中添加默认参数化值



我的Oracle脚本:

function emir_ilet_p(p_customer_no number,p_buy_sel varchar2,p_kontrat varchar2, p_miktat number,p_fyt_tipi varchar2 default 'PYS',p_fiyat number default 0,p_record_no number default null ) return varchar2;

我的Java代码:

CallableStatement  stmt;    
try {

stmt = Sv.connection.prepareCall("? = call PKG_VIOP_SO.emir_ilet_p(?,?,?,?,?,?,?)");
stmt.setInt(1, 11111);
stmt.setString(2, "S");
stmt.setString(3, "Test");
stmt.setInt(4, 2);
stmt.execute();

} catch (SQLException e) {
e.printStackTrace();
}      

我想发送到Oracle默认的最后3个参数。我该怎么做?我得到了这个代码的sqlException。

我们可以使用命名符号来调用proceduresfunctions的参数,如果我使用oracle PL/SQL,这是标准的、推荐的调用方式。

因此,以类似的方式,我们可以构造查询字符串并调用。我把字符串放在一个变量中,所以如果你有任何使用StringBuilder创建字符串的标准方法,你可以这样做

试试下面,看看它是否适合你,

CallableStatement  stmt;    
try {
String functionCallString = "{ ? = call PKG_VIOP_SO.emir_ilet_p( p_customer_no => ?, p_buy_sel => ?, p_kontrat => ?, p_miktat => ? ) }";   
stmt = Sv.connection.prepareCall(functionCallString);
stmt.setInt(1, 11111);
stmt.setString(2, "S");
stmt.setString(3, "Test");
stmt.setInt(4, 2);
stmt.execute();
} catch (SQLException e) {
e.printStackTrace();
}

根据我的经验,目前我知道这种方法,不确定是否有任何使用JDBC的优雅解决方案。

相关内容

最新更新