[英]DB2 jdbc SQL Error: SQLCODE=-302, SQLSTATE=22001 on Select
[英]DB2 V10 zOS JDBC getting 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 = ?"它运行没有错误,但这不是我想要的。
?=' '
对于任何长度的参数都通用吗?
由于裸参数标记中没有关于参数的确切数据类型或精度的信息,因此DB2服务器使用表达式的右侧来确定它。 您可以使用显式转换来向查询编译器提供必要的信息:
SELECT * FROM EMP WHERE cast(? as varchar(10)) = ' ' OR NAME = ?"
将varchar(10)
替换为EMP.NAME
的实际数据类型。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.