是否存在JDBC属性,使表达式
我正试图使用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
的实际数据类型。