繁体   English   中英

DB2 V10 zOS JDBC获得SQLCODE -302

[英]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 = ?"
它运行没有错误,但这不是我想要的。
也许有一个JDBC属性可以使表达式?=' '对于任何长度的参数都通用吗?

由于裸参数标记中没有关于参数的确切数据类型或精度的信息,因此DB2服务器使用表达式的右侧来确定它。 您可以使用显式转换来向查询编译器提供必要的信息:

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM