本主題描述使用 Microsoft ADO.NET Provider for DB2 (Data Provider) 中的靜態 SQL for DB2 套件功能時,可能發生的常見錯誤和編碼錯誤。
常見錯誤
下表說明可能發生的 DB2 伺服器錯誤,以及您必須採取的動作來更正它們。
| SQLCODE | 行動 |
|---|---|
| SQLCODE -104 (無效語句) | - 驗證數據並比對資料庫架構。 - 確認命令元素符合套件架構。 |
| SQLCODE -204 (找不到物件) | 確認限定的物件名稱(四部分或別名)。 |
| SQLCODE -440 (不正確的參數) | 確認命令元素符合封裝架構。 |
| SQLCODE -501 (資料指標未開啟) | 請確認指令中是否包含 CALL STATIC。 |
| SQLCODE -551 (許可權不足) | 確認已設定 CREATE、BIND 和 EXECUTE 套件的許可權。 |
| SQLCODE -601 (物件名稱不是唯一的) | 確認命名慣例的唯一性。 |
常見的編碼錯誤
下表說明依功能區域常見的編碼錯誤。
| 面積 | 說明 |
|---|---|
| XML 文件 | - 每個輸入參數都需要參數元素。 每個輸出數據行都需要一個數據行元素。 - 游標名稱在套件內應該是唯一的。 - 元件未正確關閉或不匹配。 |
| DB2 for IBM i 隔離等級 | 在 HIS 2010 中,支援的隔離等級為 No Commit (NC),必須在 XML 檔中指定為 “IsolationLevel=”NoCommit。 |
| 預存程式和別名重疊 | - 當套件名稱、區段編號或套件別名不是唯一的時,套件建立將會失敗。 - 如果封裝建立成功,但別名名稱與預存程式名稱相同,則可能會導致運行時間錯誤,例如,可能會出現無效參數的 SQLCODE -440 錯誤。 或者,DB2 伺服器可能會傳回非預期的結果集。 |
| 沒有別名名稱 | - 如果元數據檔不包含別名名稱,則Microsoft用戶端會以預存程式的形式執行 語句。 - 如果具有相同名稱的預存程式存在,則會執行預存程式,而且程式可能會遇到非預期的結果。 - 如果沒有同名預存程式,則資料庫伺服器會傳回未定義物件名稱的錯誤(SQLCODE -204)。 |