DB2V10-zOSJDBC正在获取SQLCODE-302



我正试图使用JDBC Type 4 Connection对z/OS DB2执行查询。查询被简化:

PreparedStatement stmt=conn.prepareStatement("SELECT*FROM EMP WHERE?=''OR NAME=?");stmt.setString(1,"Joe");stmt.setString(2,"Joe");

运行此查询将得到一个SQLCODE-302,因为Joe是长度3,而一个空白是长度1。

如果我将查询更改为

"SELECT*FROM EMP WHERE?=''OR NAME=?"
,它会运行而不会出错,但这不是我想要的
是否存在JDBC属性,使表达式?=' '对任何长度的参数都通用?

由于裸参数标记中没有关于参数的确切数据类型或精度的信息,DB2服务器使用表达式的右侧来确定它

SELECT * FROM EMP WHERE cast(? as varchar(10)) = ' ' OR NAME = ?"

varchar(10)替换为EMP.NAME的实际数据类型。

最新更新