![](/img/trans.png)
[英]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.