jdbc - DB2用於z/os Unicode表和JDBC獲取包含Unicode字元的參數 302

  显示原文与译文双语对照的内容
0 0

我有一個定義為Unicode表的DB2表它包含一個定義為 Char ( 35 )的欄位。 現在我有一個長度為 35但包含德語母音的參數,所以它需要超過 35位元組。 如果試圖執行Insert或者Update語句,我將得到一個 SQLCODE -302. 如果從參數變數中刪除一個字元,它將工作,讀取表也會返回德語的正確變數。 我嘗試使用SQuirreL和 DB2,而不是參數,而是一個字元串常量,它返回一個 SQLCode,它是字元串常數的pendant 。 下面是我嘗試在 SQirreL SQL客戶端 3.4.0中執行的SQL語句:


INSERT INTO LEA0001.VP_105 (Anlage_Zeitpunkt, Anlage_User, Aender_Zeitpunkt,
 Aender_User, V_Nr, lief_id_ref_nr, gueltig_bis_zp, gueltig_ab_zp,
 erstprod_termin,druckfreig_termin, ANF_SDB, IST_ERSTPROD_KW, pr_name, pr_strasse,
 pr_plz, pr_ort, pr_land) values (current timestamp, 'HUGO', current timestamp, '', 
48854, 2769, '9999-12-31 23:59:59.999999', '2014-11-25 15:40:36.395542',
'0001-01-01', '0001-01-01', 'N', 'N', 'Getränkeggggggggggggggggggggggggggg', '', '', '', '')

如果這個錯誤發生在DB2驅動程序中,或者有一個設置或者配置,使它能夠工作,我想知道這是什麼。 在我看來,驅動程序現在正在將位元組數與指定的欄位長度進行比較,然後拋出該錯誤,因為> 35. 但是對於Unicode表來說,這顯然是不正確的。

版本信息:在SQuirreL中我使用IBM驅動程序和db2jcc驅動程序版本 3.64.82資料庫是一個z/os DB2 V10 1015

时间: 原作者:

0 0

CHAR(35) 表示 35位元組位元組,而非字元。 這與驅動程序無關,但與在DB2中定義表的方式有關。 你需要在創建表時考慮字元列的可能位元組長度。

原作者:
...