簡體   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