Oracle SQL prepareStatement在setXXX()中发送NULL作为参数吗?

时间:2019-12-10 19:37:50

标签: sql oracle jdbc oracle11g prepared-statement

嘿,我有以下SQL查询:

Class.forName("oracle.jdbc.driver.OracleDriver");
PreparedStatement stmt = con.prepareStatement("SELECT " +
                                                "DECODE(MAX(ID), NULL, 'NO', 'YES') BOOL_VAL " +
                                              "FROM " +
                                                "MASTERNICSDB " + 
                                              "WHERE " + 
                                                "FTAG = ? " +
                                              "AND " + 
                                                "BADGENUM IS ?");
stmt.setString(1, System.getenv("COMPUTERNAME").toUpperCase());
stmt.setNull(2, Types.VARCHAR);
ResultSet rs = stmt.executeQuery();
rs.next();

上述问题是它不断抛出:

  

ORA-00908:缺少NULL关键字

我尝试了以下所有操作:

stmt.setNull(2, Types.VARCHAR);
stmt.setString(2, "NULL");
stmt.setNull(2, oracle.jdbc.OracleTypes.VARCHAR);
stmt.setObject(2, null);

似乎都不起作用。它们都收到与上述相同的错误。

但是,如果我将值放在查询中,一切都很好-但由于SQL注入和所有有趣的事情,我不想这样做。

0 个答案:

没有答案