共用方式為


適用於 DB2 的靜態 SQL 疑難解答

本主題描述使用 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)。