SQL0500 - SQL0749

SQL0501N 在 FETCH 陳述式或 CLOSE 陳述式中指定的游標沒有開啟,或者游標純量函數參照中的游標變數沒有開啟。

解說

該程式嘗試執行下列其中一項動作:

  • 使用游標來 FETCH(提取)時,指定的游標並未開啟。
  • CLOSE(關閉)游標時,指定的游標並未開啟。
  • 參照 OPEN 陳述式中的游標變數,且游標變數並未開啟。
  • 參照游標純量函數,例如 CURSOR_ROWCOUNT 函數,且游標變數並未開啟。

無法處理該陳述式。

使用者回應

請檢查先前的訊息 (SQLCODE),可能是它關閉了游標。 請注意,關閉游標後,任何提取或關閉游標的陳述式,都會收到 SQLCODE -501。

若先前從未發出 SQLCODE,則請更正應用程式,確保在執行 FETCH 或 CLOSE 陳述式時,游標是開啟的。

如果在游標純量函數中參照游標變數,請驗證游標是否為非空值、已定義、或已開啟,否則以處於該狀態的游標變數取代它。

sqlcode:-501

sqlstate:24501

SQL0502N 在 OPEN 陳述式中指定的游標已經開啟。

解說

程式嘗試對已開啟的游標執行 OPEN 陳述式。

無法處理該陳述式。游標未變更。

使用者回應

請更正應用程式,確保應用程式不會嘗試對已經開啟的游標執行 OPEN 陳述式。

sqlcode:-502

sqlstate:24502

SQL0503N 無法更新直欄,因為游標之 SELECT 陳述式的 FOR UPDATE 子句中未加以識別它。

解說

程式嘗試使用游標更新表格直欄中的值,而游標宣告或備妥的 SELECT 陳述 式中,FOR UPDATE 子句中並未識別該表格直欄。

任何欲更新的直欄,必須是游標宣告的 FOR UPDATE 子句中識別的直欄。

無法處理該陳述式。

使用者回應

請更正應用程式。如果需要更新直欄,請在游標宣告的 FOR UPDATE 子句中新增該直欄名稱。

sqlcode:-503

sqlstate:42912

SQL0504N 尚未定義游標 name

解說

雖然指定了 UPDATE 或 DELETE WHERE CURRENT OF name, 但是應用程式中未宣告游標 name

無法處理該陳述式。

使用者回應

請確定應用程式的完整性,並更正游標名稱內的拼字錯誤。

sqlcode:-504

sqlstate:34000

SQL0505N 已定義游標 name

解說

DECLARE 陳述式中指定的游標名稱已經宣告過。

無法處理該陳述式。

使用者回應

請確定名稱的拼字正確。

SQL0507N UPDATE 或 DELETE 陳述式中指定的游標並未開啟。

解說

程式嘗試執行 UPDATE 或 DELETE WHERE CURRENT OF 游標陳述式時, 指定的游標並沒開啟。

無法處理該陳述式。未執行任何更新或刪除。

使用者回應

請檢查先前的訊息 (SQLCODE),可能是它關閉了游標。 請注意,關閉游標後,任何提取或關閉游標的陳述式, 都會收到 SQLCODE -501,同時,任何更新或刪除都會收到 SQLCODE -507。請更正應用程式的邏輯,以確保執行 UPDATE 或 DELETE 陳述式時, 指定的游標是開啟的。

sqlcode:-507

sqlstate:24501

SQL0508N UPDATE 或 DELETE 陳述式中指定的游標位置不在列上。

解說

程式嘗試執行 UPDATE 或 DELETE WHERE CURRENT OF 游標陳述式時, 指定的游標位置不在物件表格列上。游標位置必須在要更新或刪除的列上。

如果列已刪除,游標就不再位於該列上。 這包括了當執行 ROLLBACK TO SAVEPOINT 時儲存點內的游標使用。

聯合系統使用者: 遠端資料來源中的記錄已被另一個應用程式(或這個應用程式內的不同游標)更新及/或刪除,且記錄已不再存在。

無法處理該陳述式。未更新或刪除任何資料。

使用者回應

請更正應用程式的邏輯,以確保游標於 UPDATE 或 DELETE 陳述式執行前, 確實位於預定的物件表格列上。 請注意,如果 FETCH 傳回訊息 SQL0100W(SQLCODE = 100), 表示游標位置不在列上。

sqlcode:-508

sqlstate:24504

SQL0509N UPDATE 或 DELETE 陳述式中指定的表格, 不是游標的 SELECT 所指定的同一表格。

解說

程式嘗試執行 UPDATE 或 DELETE WHERE CURRENT OF 游標陳述式, 其中指名的表格與宣告游標的 SELECT 陳述式所指定表格名稱不相符。

無法處理該陳述式。

使用者回應

請更正應用程式,以確保 UPDATE 或 DELETE 陳述式中識別的表格, 與游標宣告中識別的表格相同。

sqlcode:-509

sqlstate:42827

SQL0510N 不容許針對指定的游標 UPDATE 或 DELETE。

解說

程式嘗試針對不允許要求的更新或刪除的表格或視圖定義, 執行 UPDATE 或 DELETE WHERE CURRENT OF 游標陳述式。 例如,從唯讀視圖進行刪除時,或在游標沒有以 FOR UPDATE 子句定義時進行更新, 即可能發生此種錯誤。

在資料庫管理程式上,如果 SELECT 陳述式含有下列之一,則視圖為唯讀的:

  • DISTINCT 關鍵字
  • SELECT 清單中的直欄函數
  • GROUP BY 或 HAVING 子句
  • 可識別下列其中一項的 FROM 子句:
    • 多個表格或視圖
    • 唯讀視圖(SYSCAT.SYSVIEWS 的 READONLY 直欄設為 'Y')
  • 設定運算子(不是 UNION ALL)。

請注意,這些條件不適用於 SELECT 陳述式的子查詢。

游標是以 FOR FETCH ONLY 子句宣告。

游標不明確,並且指定了 BLOCKING ALL 連結選項。

游標參照了擁有 INSTEAD OF UPDATE(或 DELETE)觸發程式的視圖。

游標直接或間接參照一個利用 WITH ROW MOVEMENT 子句定義的視圖, 並且系統已嘗試 UPDATE WHERE CURRENT OF CURSOR。

無法處理該陳述式。

使用者回應

如果資料庫管理程式使陳述式失敗,且游標是以唯讀 SELECT 或 VALUES 陳述式為基礎,請勿對它發出任何更新或刪除陳述式。

如果資料庫管理程式使陳述式失敗,而且游標不是以唯讀 SELECT 或 VALUES 陳述式為基礎,而是利用 FOR FETCH ONLY 子句來定義,請從游標定義中移除這個子句,或是不發出任何更新或刪除陳述式。

如果資料庫管理程式使陳述式失敗,且無法從定義或環境定義中, 決定游標是僅提取或是可更新,請用 BLOCKING NO 或 BLOCKING UNAMBIG 連結選項, 來重新連結程式。

如果資料庫管理程式使陳述式失敗,且游標是以擁有 INSTEAD OF UPDATE(或 DELETE)觸發程式的視圖為基礎, 則請使用搜尋到的 UPDATE(或 DELETE)陳述式。

如果資料庫管理程式使陳述式失敗,且游標直接或間接參照一個利用 WITH ROW MOVEMENT 子句定義的視圖,請勿對它發出任何更新陳述式。

聯合系統使用者:請從使要求失敗的資料來源中找出問題。如果資料來源使要求失敗,請檢查該資料來源的限制,以判斷問題的原因及其解決方案。 如果限制已存在於資料來源上,請參閱該資料來源的 SQL 參考手冊,判斷為什麼無法更新物件。

sqlcode:-510

sqlstate:42828

SQL0511N 不允許 FOR UPDATE 子句,因為不能修改游標指定的表格。

解說

無法更新 SELECT 或 VALUES 陳述式的結果表格。

在資料庫管理程式上,如果游標是以 VALUES 陳述式為基礎,或 SELECT 陳述式含有下列任一個,結果表格將是唯讀的:

  • DISTINCT 關鍵字
  • SELECT 清單中的直欄函數
  • GROUP BY 或 HAVING 子句
  • 可識別下列其中一項的 FROM 子句:
    • 多個表格或視圖
    • 唯讀視圖
    • OUTER 子句含類型表格或類型視圖
    • 資料變更陳述式
  • 設定運算子(不是 UNION ALL)。

請注意,這些條件不適用於 SELECT 陳述式的子查詢。

無法處理該陳述式。

使用者回應

請勿在指定的結果表格上,執行更新作業。

聯合系統使用者:請從使要求失敗的資料來源中找出問題。

如果資料來源使要求失敗,請檢查該資料來源的限制,以判斷問題的原因及其解決方案。

如果限制已存在於資料來源上,請參閱該資料來源的 SQL 參考手冊,判斷為什麼無法更新物件。

sqlcode:-511

sqlstate:42829

SQL0512N 陳述式或指令失敗,因為正在利用不支援的方式使用聯合三段式名稱。三段式名稱:name。原因碼:reason-code

解說

您可以參照遠端物件,而不需要使用聯合三段式名稱直接參照遠端物件來使用暱稱。

陳述式利用不支援的方式來使用三段式名稱時,即會傳回此訊息。原因碼會指出發現的限制:

1

嘗試搭配使用三段式名稱與匯入公用程式或匯出公用程式。

2

嘗試對分割的資料庫,使用 CREATE ALIAS 子句發出含有三段式名稱的 SQL 陳述式。

3

嘗試在不支援三段式名稱的 SQL 陳述式類型中使用三段式名稱。

4

嘗試對不支援三段式名稱的資料來源使用三段式名稱。

使用者回應

檢閱聯合三段式名稱限制,然後修改陳述式或指令,只利用支援的方式來使用三段式名稱。

sqlcode:-512

sqlstate:56023

SQL0513W SQL 陳述式將會修改整個表格或視圖。

解說

UPDATE 或 DELETE 陳述式不包含 WHERE 子句,因此,若執行此陳述式時,會修改表格或視圖中所有的橫列。

陳述式已被接受。

聯合系統使用者:並非所有資料來源都會報告這個警告狀況。每當狀況存在時,聯合伺服器會嘗試發出這個警告,但不保證聯合伺服器永遠都會偵測到這個狀況。請勿依賴這個警告,阻止 UPDATE/DELETE 作業影響整個表格或視圖。

使用者回應

請確定您想要修改整個表格或視圖。

sqlcode:+513

sqlstate:01504

SQL0514N 游標 name 不在備妥狀態中。

解說

應用程式嘗試使用不在備妥狀態中的游標。此游標與符合下列條件的陳述式相關聯:

  1. 從未備妥
  2. 明確或隱含重新連結套件而成為無效
  3. 在之前的交易中備妥,而且應用程式套件與 KEEPDYNAMIC NO 相連結

無法處理該陳述式。

使用者回應

  1. 嘗試開啟游標之前,請先備妥 DECLARE CURSOR 陳述式中所指名的陳述式。
  2. 必須重新發出游標的準備作業。
  3. COMMIT 或 ROLLBACK 之後,應該再次備妥陳述式。或者,連結套件與 KEEPDYNAMIC YES,或使用 ALTER PACKAGE 陳述式將 KEEPDYNAMIC 內容變更為 YES。

sqlcode:-514

sqlstate:26501

SQL0516N DESCRIBE 陳述式未指定備妥的陳述式。

解說

DESCRIBE 陳述式中的陳述式名稱,必須指定一個在同一資料庫交易中備妥的陳述式。

無法處理該陳述式。

使用者回應

請驗證陳述式名稱是否指定已備妥的陳述式。

sqlcode:-516

sqlstate:26501

SQL0517N 游標 name 識別一個備妥的陳述式, 但此陳述式不是 SELECT 或 VALUES 陳述式。

解說

不能依照指定使用游標 name, 因為游標宣告中指名的備妥陳述式並非 SELECT 或 VALUES 陳述式。

無法處理該陳述式。

使用者回應

請驗證游標 name 陳述式的 PREPARE 和 DECLARE CURSOR 中, 已正確指定陳述式名稱。 或更正程式,以確定僅有備妥的 SELECT 或 VALUES 陳述式與游標宣告一同使用。

sqlcode:-517

sqlstate:07005

SQL0518N EXECUTE 陳述式中指名的陳述式不在 備妥狀態中,或者,它是 SELECT 或 VALUES 陳述式。

解說

應用程式嘗試執行 EXECUTE 的陳述式具有下列條件:

  1. 從未備妥、
  2. 是 SELECT 或 VALUES 陳述式、
  3. 明確或隱含重新連結套件而成為無效,或
  4. 在之前的交易中備妥,而且應用程式套件與 KEEPDYNAMIC NO 相連結。

無法處理該陳述式。

使用者回應

  1. 嘗試執行 EXECUTE 之前,請先備妥陳述式。
  2. 確定陳述式不是 SELECT 或 VALUES 陳述式。
  3. 必須重新發出游標的準備作業。
  4. COMMIT 或 ROLLBACK 之後,應該再次備妥陳述式。或者,連結套件與 KEEPDYNAMIC YES,或使用 ALTER PACKAGE 陳述式將 KEEPDYNAMIC 內容變更為 YES。

sqlcode:-518

sqlstate:07003

SQL0519N PREPARE 陳述式識別開啟的游標 name 的 SELECT 或 VALUES 陳述式。

解說

應用程式嘗試準備指定之游標的 SELECT 或 VALUES 陳述式,而游標已經開啟。

無法準備陳述式。 游標不受影響。

使用者回應

請更正應用程式,使它不嘗試 準備已開啟之游標的 SELECT 或 VALUES 陳述式。

sqlcode:-519

sqlstate:24506

SQL0525N 無法執行 SQL 陳述式,因為在連結時,該陳述式發生錯誤:區段 = section-number 套件 = pkgschema.pkgname 一致性記號 = Xcontoken

解說

下列其中一項:
  • 連結套件時此陳述式出錯,於是改用選項 SQLERROR (CONTINUE),忽略此錯誤。 陳述式有錯,無法執行。
  • 此處的陳述式可能不是可執行陳述式,或只有 DB2 應用要求程式才能執行。

請注意:給定的是十六進位的 contoken

無法執行陳述式。

使用者回應

如果不該在此處執行 SQL 陳述式,請更正程式讓它不在此處執行錯誤的陳述式。 前置編譯、編譯及連結置換套件。 若應該在指出的位置執行 SQL 陳述式,請更正發現的問題,並以 ACTION(REPLACE) 重新發出 PREP 或 BIND。 如果連結了許多版本的套件,請發出下列 SELECT 陳述式,找出錯誤的版本: SELECT PKGVERSION FROM SYSCAT.PACKAGES where PKGSCHEMA='pkgschema' AND PKGNAME = 'pkgname' and HEX(UNIQUE_ID) = 'contoken'

sqlcode:-525

sqlstate:51015

SQL0526N 無法處理陳述式,因為陳述式參照建立的暫存表格或宣告的暫存表格,以及包括不能與暫存表格搭配使用的功能。

解說

您可以將資料操作結果暫時儲存至暫存表格中。

暫存表格的使用方式有一些限制。例如,暫存表格不支援使用者定義的類型直欄,而且無法啟用暫存表格的索引壓縮。嘗試使用不支援的方式執行使用暫存表格的 SQL 陳述式時,即會傳回此訊息。

使用者回應

請使用下列其中一種方式來回應此訊息:

  • 修改 SQL 陳述式,以移除已建立暫存表格或已宣告暫存表格的參照。
  • 修改 SQL 陳述式,以移除暫存表格不支援的功能。

sqlcode:-526

sqlstate:42995

SQL0528N 表格或暱稱 tablename-or-nickname 已經有一個唯一限制與限制 name 重複。

解說

UNIQUE 子句使用的直欄清單,與表格 tablename 中已存在之另一個 UNIQUE 子句或 PRIMARY KEY 或 UNIQUE 限制之 PRIMARY KEY 子句的直欄清單相同。 唯一限制不可以重複。

name 是限制名稱(如果已指定或已存在)。如果未指定限制名稱, name 就是 UNIQUE 子句直欄清單中指定的第一個直欄名稱後面再加三個句點。

無法處理該陳述式。

使用者回應

移除重複的 UNIQUE 子句,或將直欄清單改成唯一限制中沒有直欄集。

sqlcode:-528

sqlstate:42891

SQL0530N FOREIGN KEY constraint-name 的插入或更新值,不等於母表格母索引鍵值的任何值。

解說

將一值放入物件表格的外部索引鍵值中,但此值不等於母表格母索引鍵值的任何值。

將一橫列插入相依表格內時, 外部索引鍵值的插入值必須等於有關聯關係的母表格中任一橫列的某些母索引鍵值。

同樣地,更新外部索引鍵值時, 外部索引鍵值的更新值必須等於陳述式完成後, 有關聯關係的母表格中任一橫列的母索引鍵值。

聯合系統使用者:限制可以存在於資料來源上(如果子表格及母表格存在於資料來源上的話)。

有些資料來源不會提供適當的值給 constraint name。在這些狀況下,訊息記號的格式如下: “<data source>:UNKNOWN”, 表示指定之資料來源的實際值未知。

無法執行陳述式。物件表格的內容保持不變。

使用者回應

首先檢查外部索引鍵值的插入或更新值,然後比較它與母表格的每一母索引鍵值,以決定並更正問題。

sqlcode:-530

sqlstate:23503

SQL0531N 無法更新關係 constraint-name 的母表格橫列中的母索引鍵值。

解說

一項操作嘗試更新母表格橫列中的母索引鍵值, 但是指定橫列的母索引鍵值之 constraint-name 限制的相關相依表格中, 有一些相依橫列。

陳述式完成時如果母表格橫列有任何相依橫列, 當限制 constraint-name 的更新規則是 NO ACTION 時, 不能更新母表格橫列的母索引鍵值。

當限制 constraint-name 的更新規則為 RESTRICT 時, 如果在嘗試更新母索引鍵值時,母表格橫列具有任何相依橫列, 則不能更新母表格橫列中的母索引鍵值。

聯合系統使用者:限制可以存在於資料來源上(如果子表格及母表格存在於資料來源上的話)。

有些資料來源不會提供適當的值給 constraint name。在這些狀況下,訊息記號的格式如下: “<data source>:UNKNOWN”, 表示指定之資料來源的實際值未知。

無法執行陳述式。母表格的內容保持不變。

使用者回應

檢查物件表格的母索引鍵值與相依表格的外部索引鍵值, 以決定是否應該變更母索引鍵值指定橫列的值。 如果這樣無法顯示問題,則請檢查物件表格與相依表格的內容,以決定並更正問題。

sqlcode:-531

sqlstate:23001、23504

SQL0532N 無法刪除母表格橫列,因為關係 constraint-name 限制此刪除。

解說

一項操作嘗試刪除母表格的指定列, 但是指定列的母索引鍵值在參照限制 constraint-name 中有相依列,而此關係中指定了 NO ACTION 或 RESTRICT 的刪除規則。

陳述式完成時,如果相依橫列仍然依附於母索引鍵值, 當限制 constraint-name 的刪除規則是 NO ACTION 時, 不能刪除母表格橫列。

刪除時,如果母表格橫列有任何相依橫列, 限制 constraint-name 的刪除規則是 RESTRICT 時, 不能刪除母表格橫列。

請注意,相依表格的刪除規則為 NO ACTION 或 RESTRICT 時,可以連續刪除其他橫列。 因此,限制 constraint-name 可能不在原始刪除作業表格中。

聯合系統使用者:限制可以存在於資料來源上(如果子表格及母表格存在於資料來源上的話)。

有些資料來源不會提供適當的值給 constraint name。在這些情況下,適當的欄位會包含一些值(如 “unknown”), 以指出真正值是未知的。

無法執行陳述式。表格的內容保持不變。

使用者回應

檢查所有後續表格的刪除規則,以決定並更正問題。 所涉及的特定表格可從關係 constraint-name 來決定。

sqlcode:-532

sqlstate:23001、23504

SQL0533N INSERT 陳述式無效,因為有一關係限制全選的結果至一橫列。

解說

包括全選的 INSERT 操作,嘗試將多橫列插入一表格,而此表格是同一參照限制關係中的母項與相依項。

INSERT 操作的全選所傳回的資料不應超過一列。

無法執行 INSERT 陳述式。物件表格的內容保持不變。

聯合系統使用者:限制可以存在於資料來源上(如果子表格及母表格存在於資料來源上的話)。

使用者回應

檢查全選的搜尋條件,以確定選擇的資料不超過一橫列。

sqlcode:-533

sqlstate:21501

SQL0534N 多橫列更新無效。

解說

UPDATE 操作嘗試在一主要索引鍵值或唯一索引中包括的直欄,執行多橫列更新。

不支援主要索引鍵值或唯一索引的直欄的多橫列更新。

無法執行 UPDATE 陳述式。表格的內容保持不變。

聯合系統使用者: 限制可以存在於聯合伺服器上(如果子表格及母表格以表格方式存在於聯合伺服器上的話),或是它可以存在於資料來源上(如果子表格及母表格存在於資料來源上的話)。

使用者回應

請確定 UPDATE 陳述式的搜尋條件只選取一個物件表格橫列進行更新。

sqlcode:-534

sqlstate:21502

SQL0535N DELETE 陳述式無效,因為自行參照關係將刪除限制至一橫列。

解說

包括 WHERE 子句的 DELETE 操作,嘗試從一表格刪除多橫列,而此表格是同一參照限制關係中的母項與相依項,並有 RESTRICT 或 SET NULL 刪除規則。

DELETE 操作的 WHERE 子句所選取的資料,不應多於一橫列。

無法執行 DELETE 陳述式。物件表格的內容保持不變。

聯合系統使用者:限制可以存在於資料來源上(如果子表格及母表格存在於資料來源上的話)。

使用者回應

檢查 WHERE 子句搜尋條件,以確定選取的資料不多於一橫列。

附註:這個限制只在第 2 版之前的 DB2 版次中。

sqlcode:-535

sqlstate:21504

SQL0536N DELETE 陳述式無效,因為表格 name 會受操作影響。

解說

嘗試執行 DELETE 操作,而子查詢中參照指示的表格。

DELETE 陳述式子查詢中所參照的指示表格可能受影響,因為它是下列其中一項:
  • 與 CASCADE 或 SET NULL 刪除規則有關係的 DELETE 物件表格的相依項。
  • 與 CASCADE 或 SET NULL 刪除規則有關係的另一表格的相依項,而從 DELETE 物件表格所作的刪除可階式下達至該表格。

聯合系統使用者:限制可以存在於資料來源上(如果子表格及母表格存在於資料來源上的話)。

有些資料來源不會提供適當的值給 name。 在這些情況下,適當的欄位會包含一些值(如 “unknown”), 以指出真正值是未知的。

無法處理陳述式。

使用者回應

當一表格可能受到 DELETE 陳述式影響時,不要在 DELETE 陳述式子查詢中參照該表格。

附註:這個錯誤只適用於第 2 版之前的 DB2 版次,以及透過 DB2 Connect 存取的主機。

sqlcode:-536

sqlstate:42914

SQL0537N 索引鍵直欄清單多次識別直欄 column-name

解說

直欄 column-name 多次出現在索引鍵直欄清單中。索引鍵直欄清單會出現在 PRIMARY KEY 子句、FOREIGN KEY 子句、UNIQUE 子句、DISTRIBUTE BY 子句、ORGANIZE BY 子句、PARTITION BY 子句中,或是以 CREATE 或 ALTER 陳述式的功能相依關係出現。

聯合系統使用者:限制可以存在於資料來源上(如果子表格及母表格存在於資料來源上的話)。

有些資料來源不會提供適當的值給 column-name。在這些情況下,適當的欄位會包含一些值(如 “unknown”), 以指出真正值是未知的。

無法處理該陳述式。

使用者回應

移除重複的直欄名稱。

sqlcode:-537

sqlstate:42709

SQL0538N FOREIGN KEY name 不符合表格或暱稱 table-name-or-nickname 的母索引鍵說明。

解說

指出的外部索引鍵的定義,不符合表格或暱稱 table-name-or-nickname 的母索引鍵說明。

可能的原因如下:

  • 外部索引鍵直欄清單中的直欄數,不符合母索引鍵直欄清單中的直欄數。
  • 外部索引鍵直欄清單的直欄數,不符合母表格或母暱稱的主要索引鍵裡的直欄數(未指定主要索引鍵直欄清單)。
  • 相關直欄說明不相容。如果對應直欄有相容的資料類型(兩直欄都是數字、 字串、圖形、日期/時間,或有同樣的特殊類型),則直欄說明是相容的。
  • REFERENCES 子句中的直欄名稱清單,無法參照以 BUSINESS_TIME WITHOUT OVERLAPS 定義的母索引鍵。

FOREIGN KEY 子句指定的 name 是限制名稱。如果未指定限制名稱,name 將是子句所指定的第一個直欄名稱,其後跟著三個句點。

聯合系統使用者應該注意到,某些資料來源不會對 nametable-name-or-nickname 提供適當的值。在這些情況下,適當的欄位會包含一些值(例如 "unknown"),以指出實際值不明。

限制可以存在於資料來源上(如果子表格及母表格存在於資料來源上的話)。

無法處理該陳述式。

使用者回應

請更正陳述式,使外部索引鍵值說明符合母索引鍵說明。

sqlcode:-538

sqlstate:42830

SQL0539N 表格或暱稱 name 沒有 key-type 索引鍵。

解說

因此會發生下列其中一種情況:
  • FOREIGN KEY 子句中已指定表格或暱稱 name 當作母項, 但因為表格或暱稱沒有主要索引鍵,所以並未定義成為母項。
  • ALTER TABLE 陳述式試圖建立表格 name 的 FOREIGN KEY, 但表格或暱稱沒有主要索引鍵。
  • ALTER TABLE 陳述式嘗試終止表格 name 的主要索引鍵, 但該表格沒有主要索引鍵。
  • ALTER TABLE 陳述式嘗試終止表格 name 的分割鍵, 但該表格沒有分割鍵。

聯合系統使用者:限制可以存在於資料來源上(如果子表格及母表格存在於資料來源上的話)。

有些資料來源不會提供適當的值給 namekey-type。 在這些情況下,適當的欄位會包含一些值(如 “unknown”), 以指出真正值是未知的。

無法處理該陳述式。系統型錄不能定義為參照限制中的母項。

使用者回應

建立參照限制時,請於指定任何外部索引鍵值(限制)前,先指定主要索引鍵。

sqlcode:-539

sqlstate:42888

SQL0540N 表格 table-name 定義不完整,缺少主要索引或必要的唯一索引。

解說

此表是由 PRIMARY KEY 子句或 UNIQUE 子句定義。 它的定義不完整, 必須等到主要索引鍵(主要索引)和任何 UNIQUE 子句的每一個直欄集都定義唯一索引(所需唯一索引)後, 才能使用。 曾經試圖在 FOREIGN KEY 子句或 SQL 操作陳述式中使用此表。

無法執行陳述式。

使用者回應

先在表格中定義主要索引或所需唯一索引,然後才參照。

sqlcode:-540

sqlstate:57001

SQL0541W 限制重複,因此不處理參照、主要索引鍵、或唯一限制 name

解說

如果 name 參照到參照限制,則表示有一個 FOREIGN KEY 子句使用的外部索引鍵和母表格,或是外部索引鍵和母暱稱,與另一個 FOREIGN KEY 子句相同。

如果 name 參照一個主要索引鍵或唯一限制,則會出現下列一種狀況。

  • PRIMARY KEY 在陳述式中使用相同的直欄集當作 UNIQUE 子句。
  • UNIQUE 子句在陳述式中使用相同的直欄集當作 PRIMARY KEY 子句或另一個 UNIQUE 子句。
  • 表格的相同直欄集中已有 PRIMARY KEY 或 UNIQUE 限制。

name 是限制名稱(如果已指定)。

如果未指定限制名稱,則 name 是 FOREIGN KEY 或 UNIQUE 子句的直欄清單所指定的第一個直欄名稱,其後跟著三個句點。

聯合系統使用者:限制可以存在於資料來源上(如果子表格及母表格存在於資料來源上的話)。

有些資料來源不會提供適當的值給 name。 在這些情況下,適當的欄位會包含一些值(例如 "unknown"),以指出實際值不明。

未建立指示的參照限制或唯一限制。已成功地處理陳述式。

使用者回應

不需要任何動作。 處理程序可以繼續進行。

sqlcode:+541

sqlstate:01543

SQL0542N 名稱為 column-name 的直欄不能是主要索引鍵或唯一索引鍵的直欄,原因是它可包含空值。

解說

已定義 PRIMARY KEY 子句或 UNIQUE 子句中所識別的直欄(名稱為 column-name)以容許使用空值,或者嘗試變更屬於 PRIMARY KEY 或 UNIQUE 限制的直欄,以容許使用空值。

聯合系統使用者:有些資料來源不會提供適當的值給 column-name。在這些情況下,適當的欄位會包含一些值(例如 "unknown"),以指出實際值不明。

無法處理該陳述式。

使用者回應

更正直欄、主要索引鍵或唯一鍵定義。 如果這個傳回的錯誤為變更表格陳述式的一部分,則必須先移除 PRIMARY KEY 或 UNIQUE 限制,才能變更直欄以容許空值。

sqlcode:-542

sqlstate:42831

SQL0543N 無法刪除母表格中的橫列,因為核對限制 constraint-name 限制此刪除。

解說

無法執行刪除操作,因為目標表格是一母表格,且以參照限制連接至包括 SET NULL 刪除規則的相依表格。然而,相依表格上定義的核對限制,使直欄不能包含空值。

無法處理該陳述式。

使用者回應

檢查相依表格中的外部索引鍵值與其刪除規則,以及衝突的核對限制。變更刪除規則或核對限制,使它們彼此不衝突。

sqlcode:-543

sqlstate:23511

SQL0544N 無法新增核對限制 constraint-name,因為表格包含違反限制的橫列。

解說

表格中至少有一現存橫列違反 ALTER TABLE 陳述式中要新增的核對限制。

無法處理該陳述式。

使用者回應

檢查 ALTER TABLE 陳述式中指定的核對限制定義和表格中的資料,以決定為何會有限制違規。變更核對限制或資料,以免有限制違規。

sqlcode:-544

sqlstate:23512

SQL0545N 不允許要求的操作,因為列不符合檢查限制 constraint-name

解說

核對限制違規可能發生在 INSERT 或 UPDATE 操作中。結果橫列違反該表格中的核對限制定義。

無法處理該陳述式。

使用者回應

檢查目錄視圖 SYSCAT.CHECKS 中的資料及核對限制定義,以決定 INSERT 或 UPDATE 陳述式失敗的原因。請變更資料,以免限制違規。

sqlcode:-545

sqlstate:23513

SQL0546N 核對限制 constraint-name 無效。

解說

基於下列一項或多項原因,CREATE TABLE 或 CREATE NICKNAME、ALTER TABLE 或 ALTER NICKNAME 陳述式中的核對限制無效:

  • 限制定義包含子查詢
  • 限制定義包含直欄函數
  • 限制定義包含主變數
  • 限制定義包含參數標記
  • 限制定義包含特別暫存器或內建函數,視特別暫存器的值而定
  • 限制定義包含廣域變數
  • 限制定義包含變異的使用者定義函數
  • 限制定義包含有外部動作的使用者定義函數
  • 限制定義包含有 scratchpad 選項的使用者定義函數
  • 核對限制是直欄定義的一部分,且其檢查條件包含直欄定義以外的直欄名稱參照。
  • 限制定義包含了取消參照作業或 DEREF 函數,其中範圍參照引數不是物件 ID (OID) 直欄。
  • 限制定義使用 TYPE 述詞。
  • 限制定義包括了含有 SCOPE 子句的 CAST 規格。
  • 功能相依關係是以屬性 ENFORCED 定義。
  • 在功能相依關係的子集直欄中指定了一個可為空值的直欄。
  • 限制定義包含文字搜尋函數。
  • 限制定義包含 XML 直欄。
  • 限制定義包含 XMLQUERY 或 XMLEXISTS 表示式。

無法處理該陳述式。

使用者回應

使用者回應為下列其中一項,視錯誤原因而定:

  • 變更核對限制,使它不包括列示的登錄。
  • 將核對限制定義移出直欄定義,使它成為表格層次限制定義。
  • 變更功能相依關係,使其不指定 ENFORCED 屬性。
  • 在功能相依關係的直欄子集中,將可為空值的直欄變更為不可為空值。

sqlcode:-546

sqlstate:42621

SQL0548N check-condition-element 來定義的核對限制或產生的直欄無效。

解說

基於下列一項或多項原因,CREATE TABLE 或 CREATE NICKNAME、ALTER TABLE 或 ALTER NICKNAME 陳述式中的核對限制無效:

  • 限制定義包含子查詢
  • 限制定義包含直欄函數
  • 限制定義包含主變數
  • 限制定義包含參數標記
  • 限制定義包含特別暫存器或內建函數,視特別暫存器的值而定
  • 限制定義包含廣域變數
  • 限制定義包含非固定函數
  • 限制定義包含有外部動作的使用者定義函數
  • 限制定義包含有 scratchpad 選項的使用者定義函數
  • 定義包含具有 CONTAINS SQL 或 READS SQL DATA 選項的使用者定義函數
  • 定義包含對以表示式為根據之產生直欄的參照
  • 核對限制是直欄定義的一部分,且其檢查條件包含直欄定義以外的直欄名稱參照
  • 產生直欄定義包含對其本身的參照
  • 限制定義包含取消參照作業或 DEREF 函數,其中範圍參照引數不是物件 ID (OID) 直欄
  • 限制定義使用 TYPE 述詞
  • 限制定義包括含有 SCOPE 子句的 CAST 規格
  • 限制或產生的直欄定義包含文字搜尋函數
  • 限制定義包含 XML 直欄
  • 限制定義包含 XMLQUERY 或 XMLEXISTS 表示式
  • 產生的直欄表示式參照對其定義直欄遮罩的直欄

錯誤訊息本文內的記號列出無效的登錄。

無法處理該陳述式。

使用者回應

使用者回應為下列其中一項,視錯誤原因而定:

  • 請變更核對限制或產生直欄,使它不包含列出的項目。
  • 將核對限制定義移出直欄定義,使它成為表格層次限制定義。

sqlcode:-548

sqlstate:42621

SQL0549N 因為連結選項 DYNAMICRULES RUN 對 object-type2 而言無效,所以 object-type1 object-name1 不容許 statement 陳述式。

解說

程式試圖發出所指出的 SQL 陳述式,該陳述式是只能在表現出執行行為的套件中動態準備的幾個 SQL 陳述式之一。 這類的 SQL 陳述式包括:

  • 動態 GRANT 陳述式
  • 動態 REVOKE 陳述式
  • 動態 ALTER 陳述式
  • 動態 CREATE 陳述式
  • 動態 DROP 陳述式
  • 動態 COMMENT ON 陳述式
  • 動態 RENAME 陳述式
  • 動態 SET INTEGRITY 陳述式
  • 動態 SET EVENT MONITOR STATE 陳述式
  • 動態 TRANSFER OWNERSHIP 陳述式
  • 動態 CREATE USAGE LIST
  • 動態 ALTER USAGE LIST
statement

發生錯誤的 SQL 陳述式

object-type1

PACKAGE 或 DBRM。只有在 DRDA 連線中,DBRM 才有效。

object-name1

如果 object-type1 為 PACKAGE, object-name1 則為該套件的名稱, 格式為 'location-id.collection-id.package-id'。如果 object-type1 為 DBRM, object-name1 則為該 DBRM 的名稱, 格式為 'plan-name DBRM-name'。

object-type2

PACKAGE 或 PLAN。只有在 DRDA 連線中,PLAN 才有效。 如果 object-type1 為 PACKAGE, 則 object-type2 可以是 PACKAGE 或 PLAN(無論是哪一個,都已與 DYNAMICRULES(BIND) 連結)。如果 object-type1 為 DBRM, 則 object-type2 為 PLAN。

無法執行 SQL 陳述式。

使用者回應

請執行下列其中一項,以更正錯誤:

  • 如果該 SQL 陳述式是內嵌式,請將它移除,重新前置編譯及編譯應用程式, 並重新發出 BIND 指令。
  • 如果可以,請使用具有與 DYNAMICRULES(RUN) 連結之套件或計畫的 SQL 陳述式。
  • 請針對 SQL 陳述式所連結之計畫或套件,以 DYNAMICRULES(RUN) 選項來發出 REBIND 指令。

sqlcode:-549

sqlstate:42509

SQL0551N 陳述式失敗,因為授權 ID 沒有執行作業的必要授權或專用權。授權 ID:authorization-ID。作業:operation。物件:object-name

解說

無法在指定的物件上執行作業。一般而言,因為授權 ID 沒有執行作業的必要權限或專用權,所以會傳回此訊息。在部分情況下,即使在授權 ID 具有管理權限時,不容許作業的物件也會傳回它。

有數個不同原因會傳回此訊息。以下是部分可能會傳回此訊息的實務範例:

實務範例 1

嘗試建立或變更具有參照限制的表格失敗,因為使用者沒有 REFERENCE 專用權。在此實務範例中,執行時期記號 operation 的值是 "REFERENCES",而執行時期記號 object-name 的值是限制所參照的物件。

實務範例 2

執行 DB2 公用程式或 CLI 應用程式失敗,因為已建立資料庫的使用者 ID 不再存在,或不再具有執行 DB2 公用程式或 CLI 套件所需的專用權。

實務範例 3

呼叫常式失敗,因為使用者沒有 SQL 路徑中任何候選常式的 EXECUTE 專用權。在此實務範例中,執行時期記號 object-name 的值是 SQL 路徑上候選常式的名稱。

實務範例 4

建立常式失敗,因為用來連結常式的使用者 ID 沒有發出常式中所有陳述式所需的專用權。

實務範例 5

使用 CREATE OR REPLACE 陳述式取代現存物件失敗,因為使用者不是物件擁有者。

實務範例 6

嘗試完成線上移動表格作業失敗,因為使用者的授權 ID 與起始線上移動表格作業的使用者不同。

實務範例 7

嘗試對系統產生的統計視圖(與表示式型索引相關聯)執行不支援的作業。不支援任何使用者修改專用權或存取此類型的統計視圖。不過,對基礎表格具有足夠權限及專用權的使用者可以透過發出 RUNSTATS 指令,或是手動更新統計資料,來更新此類型統計視圖的統計資料。

在聯合環境中:

因為使用者沒有必要的權限,所以下列動作失敗時可能會傳回此訊息:

  • 變更下列其中一個使用者對映選項:
    • REMOTE_PASSWORD
    • FED_PROXY_USER
    • USE_TRUSTED_CONTEXT
  • 變更受信任的使用者環境定義
  • 建立或捨棄具有 FED_PROXY_USER 選項或 USE_TRUSTED_CONTEXT 選項的使用者對映
  • 建立或捨棄具有 FED_PROXY_USER 選項的伺服器

必要授權可以在聯合伺服器及(或)資料來源中。

有些資料來源不會提供適當的值給執行時期記號 authorization-IDoperationobject-name。在這些情況下,訊息記號可能為下列其中一種格式:

  • <data source> AUTHID:UNKNOWN
  • UNKNOWNM
  • <data source> :TABLE/VIEW。

使用者回應

如果授權 ID authorization-ID 沒有必要的權限或專用權,請視情況授與必要的專用權或權限。

以下是此訊息之解譯區段中所述實務範例的回應:

實務範例 1

使用陳述式 GRANT REFERENCES ON object-name TO authorization-ID,授與 REFERENCES 專用權。

實務範例 2

連接至資料庫,然後從實例目錄的 bnd 子目錄中發出下列其中一個 CLP 指令,以將 DB2 公用程式或 CLI 套件重新連結至資料庫:

  • 若為 DB2 公用程式:DB2 bind @db2ubind.lst blocking all grant public
  • 若為 CLI 套件:DB2 bind @db2cli.lst blocking all grant public

如果使用者沒有套件的 EXECUTE 專用權,請執行 GRANT 陳述式,授與套件的 EXECUTE 專用權。

實務範例 3

執行 GRANT 陳述式,以將常式的 EXECUTE 專用權授與授權 ID。

實務範例 4

將常式內陳述式正在嘗試存取之物件的明確專用權授與授權 ID。

實務範例 5

使用下列其中一種方式來回應實務範例 5:

  • 以下列使用者身分發出陳述式:要取代之物件的擁有者的使用者。
  • 執行 TRANSFER OWNERSHIP 陳述式,以傳送物件的所有權。
實務範例 6

使用與起始線上移動表格作業之使用者相同的授權 ID,重新呼叫程序。

實務範例 7

對作業指定不同的物件。

sqlcode:-551

sqlstate:5UA0K、42501

SQL0552N authorization-ID 沒有執行作業 operation 的專用權。

解說

授權 ID authorization-ID 嘗試執行所指定的 operation, 但無適當的權限。

聯合系統使用者: 有些資料來源不會提供適當的值給 authorization-ID 及 <operation>。 在這些情況下,訊息記號的格式如下:"<data source> AUTHID:UNKNOWN",而 "UNKNOWN" 指出所指定資料來源中的授權 ID 及作業的實際值不明。

無法處理該陳述式。

使用者回應

確定 authorization-ID 具有執行作業所需的授權。

聯合系統使用者:這個授權可以在聯合伺服器、資料來源或兩者中。

sqlcode:-552

sqlstate:42502

SQL0553N 不能使用綱目名稱 schema-name 建立物件。

解說

綱目名稱 schema-name 無效的原因,需視所要建立的物件類型而定。

  • 無法利用綱目名稱 SYSCAT、SYSFUN、SYSPUBLIC、SYSSTAT、SYSIBM 或 SYSIBMADM,建立表格、視圖、索引及套件物件。強烈建議您勿以 SYS 作為綱目名稱的開始,因為以這個字母開始的其他綱目,可能會保留給資料庫產品在未來專用。
  • 所有其他類型的物件(例如:使用者定義的函數、特殊類型、觸發程式、綱目、別名、使用情況清單)無法使用以字母 SYS 開頭的任何綱目名稱來建立。

無法處理該陳述式。

使用者回應

請使用有效的綱目名稱,或刪除明確的綱目名稱,然後重新執行陳述式。

sqlcode:-553

sqlstate:42939

SQL0554N 授權 ID 無法授與自身專用權或權限。

解說

授權 ID 試圖執行陳述式,以將專用權或權限授與自身的授權 ID。 如果這是一個 GRANT 陳述式,則該授權 ID 本身會顯示為要被授與專用權、權限、安全標籤或豁免之授權 ID 清單中的其中一個項目。如果這是一個 CREATE TRUSTED CONTEXT 或 ALTER TRUSTED CONTEXT,則授權 ID 本身會顯示為 SYSTEM AUTHID 屬性的值,或在 WITH USE FOR 子句中指定的其中一個授權名稱。

無法處理該陳述式。

使用者回應

移除或取代陳述式中的授權 ID。

sqlcode:-554

sqlstate:42502

SQL0555N 授權 ID 不能從本身撤消專用權。

解說

授權 ID 嘗試執行 REVOKE 陳述式,其中,該授權 ID 本身是要被撤消專用權之授權 ID 的列示登錄之一。

無法處理該陳述式。

使用者回應

請從列示移除該授權 ID。

sqlcode:-555

sqlstate:42502

SQL0556N 嘗試從 authorization-ID 取消專用權、安全標籤、豁免或角色但被拒絕,因為 authorization-ID 沒有保留這個專用權、安全標籤、豁免或角色。

解說

無法取消專用權、安全標籤、豁免或角色,因為 authorization-ID 沒有保留專用權、安全標籤、豁免或角色。

無法處理該陳述式。

使用者回應

請變更 REVOKE 陳述式,符合 REVOKE 規則,然後重新提交陳述式。請確定當 REVOKE 陳述式列示數個要取消的專用權、安全標籤、豁免或角色,以及授權 ID 清單時,每一授權 ID 至少擁有指定的專用權、安全標籤、豁免或角色之一。

sqlcode:-556

sqlstate:42504

SQL0557N 不能授予或取消指定的專用權組合。

解說

因此會發生下列其中一種情況:
  • GRANT 或 REVOKE 陳述式包含由不同類別之專用權構成的組合。專用權必須全是一種類別。範例包括 DATABASE、PLAN 或 TABLE。
  • GRANT 陳述式嘗試對一視圖授予不允許的專用權。ALTER,INDEX 與 REFERENCES 不能授予視圖。

無法處理該陳述式。

使用者回應

請更正並重新提交陳述式。

sqlcode:-557

sqlstate:42852

SQL0558N 嘗試撤消 authorization-ID 的某項專用權,但遭到拒絕,原因是 authorization-ID 持有 control 專用權。

解說

authorization-ID 持有 control 專用權。所要撤消的專用權是 control 專用權隱含提供的,所以除非同時撤消 control 專用權,否則無法撤消。

control 的有效值如下所示:

  • DBADM
  • CONTROL
  • CREATE NOT FENCED ROUTINE

無法執行陳述式。未撤消任何專用權。

使用者回應

若您願意,請撤消 control 專用權。

sqlcode:-558

sqlstate:42504

SQL0562N 未執行陳述式,因為無法透過角色直接或間接將指定的資料庫或綱目專用權授與群組 PUBLIC。

解說

您可以發出 GRANT 陳述式,將專用權授與使用者或群組。

嘗試使用角色直接或間接將不受支援的專用權授與群組 PUBLIC 時,會傳回此訊息。

使用者回應

不需要任何回應。

不支援將管理權限(例如 DBADM 或 SCHEMAADM)授與 PUBLIC。

sqlcode:-562

sqlstate:42508

SQL0567N 作業失敗,因為指定的授權名稱不符合 ID 命名規則。授權名稱:authorization-name

解說

使用規則以命名所有資料庫物件、使用者名稱或授權名稱、密碼、群組、檔案及路徑。有些規則特定用於正在進行工作的平台。

當指定的授權名稱不符合 ID 命名規則時,便會傳回此訊息。例如,當授權名稱中包含 a 到 z、A 到 Z、0 到 9 以及所支援特殊字元以外的字元時,便會傳回此訊息。

無法處理該陳述式。

使用者回應

指定滿足 ID 命名規則的授權名稱,然後重新執行作業。

sqlcode:-567

sqlstate:42602

SQL0569N 授權 ID authorization-name 無法識別系統中唯一的使用者、群組或角色。

解說

GRANT 或 REVOKE 陳述式所指定的授權 ID 並未專門識別安全名稱空間中的使用者、角色或群組。authorization-name 的參照不明確。請注意,當使用 DCE 安全時,一律需要 USER、GROUP 或 ROLE 關鍵字。

使用者回應

變更陳述式,以明確地指定 USER、GROUP 或 ROLE 關鍵字,來專門識別指定的授權 ID。

sqlcode:-569

sqlstate:56092

SQL0570W 並未在類型為 object-type 的物件 object-name 上授與所有要求的專用權。

解說

嘗試對類型 object-type 的物件 object-name 執行 GRANT 作業, 但並未被授予部分或所有的專用權。 發出陳述式的授權 ID 缺少 GRANT 選項的某些專用權,或缺少 ACCESSCTRL 或 SECADM 權限。

已具有所有有效的必要專用權。

使用者回應

請取得必要權限,然後重試作業。

sqlcode:+570

sqlstate:01007

SQL0572N 套件 pkgname 無效。

解說

套件 pkgname 標記為無作用,必須明確地重新連結後(不需指定 RESOLVE CONSERVATIVE)才能使用。 不能使用此套件,因為它相依的一個或多個使用者定義函數已被終止。

使用者回應

請使用 REBIND(不需指定 RESOLVE CONSERVATIVE)或 BIND 指令明確地重新連結所指名的套件。

sqlcode:-572

sqlstate:51028

SQL0573N 在限制 name 的參照子句中指定的直欄清單,未識別母表格或暱稱 table-name 的唯一限制。

解說

name 識別之限制的參照子句中指定的直欄清單名稱, 不符合主要索引鍵的直欄名稱或參照表格 talbe-name 的任何唯一鍵。

name 是限制名稱(如果已指定)。如果未指定限制名稱, name 就是 FOREIGN KEY 子句直欄清單中指定的第一個直欄名稱後面再加三個句點。

無法處理該陳述式。

使用者回應

請更正參照子句中的直欄清單,或在參照到的表格或暱稱中新增唯一限制。

sqlcode:-573

sqlstate:42890

SQL0574N DEFAULT 值或 IDENTITY 屬性值對表格 table-name 中的直欄 column-name 無效。原因碼:reason-code

解說

表格 table-name 中的直欄 column-name 的 DEFAULT 值或 IDENTITY 屬性值無效可能的原因碼如下:
1
此值不能指定給該直欄,因為常數不符該資料類型的常數的格式、值的長度或精確度不正確、或函數傳回不正確的資料類型。
2
指定浮點常數,而該直欄不是浮點資料類型
3
指定十進位常數,因此,將非零數字指定給該直欄時,數字會被截斷
4
值大於 254 個位元組,包括字串的引號、起始字元(諸如十六進位常數的 X)、完全限定元的函數名稱,以及括弧。值中無意義的空白不予處理。在不等的字碼頁環境中,由於資料庫字碼頁中的字串擴充,值可能大於 254 個位元組。
5
指定 USER 特別暫存器,而字串資料類型的長度屬性小於 8。
6
指定日期時間特別暫存器(CURRENT DATE、CURRENT TIME 或 CURRENT TIMESTAMP),但與直欄的資料類型不相符。
7
不支援指定的函數。指定的函數必須是系統產生的轉換函數或內建函數 BLOB、DATE、TIME 或 TIMESTAMP 之一。
8
日期時間函數的引數不是字串常數或對應的日期時間特別暫存器。
9
指定系統產生的轉換函數,而直欄的定義未包含使用者定義的特殊類型。
10
識別直欄的 START WITH 或 INCREMENT BY 選項被指定了一個含有非零小數位數的值。
11
指定特別暫存器作為 DEFAULT 值,且字串資料類型的長度屬性小於 128。
12
已指定小數浮點常數,但直欄不是小數浮點資料類型。
<0
小於零的任何原因碼都是 SQLCODE。 檢查對應此 SQLCODE 的錯誤訊息,可決定 DEFAULT 值說明中的錯誤。

無法處理該陳述式。

使用者回應

請根據傳回的原因碼更正 DEFAULT 值或 IDENTITY 屬性值。

sqlcode:-574

sqlstate:42894

SQL0575N 不能使用視圖或具體化查詢表格 name,因為它已標記為無效。

解說

視圖或具體化查詢表格 name 已被標為無效, 因為它相依的表格、視圖、別名或專用權已被移除。此視圖不能由下列以外的任何 SQL 陳述式使用:
  • COMMENT ON
  • DROP VIEW 或 DROP TABLE
  • CREATE ALIAS
  • CREATE VIEW 或 CREATE TABLE

無法處理該陳述式。

使用者回應

如果 name 是視圖,請發出 CREATE VIEW 陳述式, 使用與無作用的視圖相同的視圖定義,重新建立視圖。如果 name 是具體化查詢表格,請使用無效的具體化查詢表格之定義來發出 CREATE TABLE 陳述式, 以重新建立具體化查詢表格。

sqlcode:-575

sqlstate:51024

SQL0576N 無法為 name2 建立別名 name,因為如此會導致重複的別名鏈結。

解說

name2 上的 name 的別名定義會導致永遠無法決定的重複別名鏈結。例如,「別名 A 參照別名 B,而別名 B 參照別名 A」即是永遠無法決定的重複別名鏈結。

無法處理該陳述式。

使用者回應

變更 name 的別名定義,或修改別名鏈結中其他別名定義之一的定義,以避免重複的別名鏈結。

sqlcode:-576

sqlstate:42916

SQL0577N 使用者定義的常式 routine-name(特定名稱 specific-name)試圖修改資料, 但沒有定義為 MODIFIES SQL DATA。

解說

用來實作常式主體的程式,不能用來修改 SQL 資料。

使用者回應

請移除任何會修改資料的 SQL 陳述式,然後重新編譯程式。 請查出在定義常式時所指定的 SQL 層次。

sqlcode:-577

sqlstate:38002

sqlstate:42985

SQL0579N 常式 routine-name(特定名稱 specific-name)試圖讀取資料, 但是沒有定義為 READS SQL DATA 或 MODIFIES SQL DATA。

解說

用來實作常式主體的程式,不能用來讀取 SQL 資料。

使用者回應

請移除任何會讀取資料的 SQL 陳述式,然後重新編譯程式。 請查出在定義常式時所指定的 SQL 層次。

sqlcode:-579

sqlstate:38004

sqlstate:42985

SQL0580N CASE 表示式的結果表示式不能全是 NULL。

解說

陳述式中有一個 CASE 表示式,它所有的結果表示式(跟隨在 THEN 與 ELSE 關鍵字後面的表示式)都以關鍵字 NULL 編碼。

無法處理該陳述式。

使用者回應

變更 CASE 表示式,以使其中至少包括一個非關鍵字 NULL 的結果表示式。

sqlcode:-580

sqlstate:42625

SQL0581N CASE 表示式或 DECODE 函數的結果表示式,其資料類型不相容。

解說

陳述式中有一 CASE 表示式或 DECODE 函數,其中的結果表示式(跟隨在 CASE 表示式的 THEN 與 ELSE 關鍵字後面的表示式)不相容。

CASE 表示式的資料類型或 DECODE 函數的結果,是在結果表示式上使用「結果資料類型的原則」來決定。

無法處理該陳述式。

使用者回應

請更正結果表示式,以使它們相容。

sqlcode:-581

sqlstate:42804

SQL0582N VALUES 子句、IN 述詞或、GROUP BY 子句或 ORDER BY 子句中的 CASE 表示式, 不能包括一個數量化述詞、使用全選的 IN 述詞或 EXISTS 述詞。

解說

CASE 表示式的搜尋條件是:
  • 已數量化的述詞(使用 SOME、ANY 或 ALL 的述詞)
  • 使用全選的 IN 述詞或
  • EXISTS 述詞
而且,CASE 表示式是下列各項的一部分:
  • VALUES 子句
  • IN 述詞
  • GROUP BY 子句或
  • ORDER BY 子句

不支援此種 CASE 表示式。 CASE 表示式可能是函數(以 SQL 編寫)的一部分。

無法處理該陳述式。

使用者回應

從 CASE 表示式中移除限定元述詞、IN 述詞或 EXISTS 述詞的使用。 如果 CASE 表示式是函數的一部分,編寫查詢時就不能使用會產生錯誤的函數。

sqlcode:-582

sqlstate:42625

SQL0583N 使用常式或表示式 name 無效,因為它並非固定的,或是它有外部動作。

解說

常式(函數或方法)或表示式已定義為非固定的,或已定義為具有外部動作。 這在使用它的環境定義中不受支援。 這類函數在下列環境定義中無效:

  • 作為 BETWEEN 述詞中的第一個運算元
  • 在簡單 case 表示式中的第一個 WHEN 關鍵字之前的表示式中
  • 作為 DECODE 函數的第一個引數
  • 作為 RATIO_TO_REPORT 函數的引數
  • 在 GROUP BY 子句的表示式中
  • 在 ORDER BY 子句的表示式中(僅用於外部動作中)
  • 在 PARTITION BY 子句的表示式中
  • 在使用者定義述詞規格或索引擴充定義的 FILTER 子句中
  • 在程序定義的廣域變數或參數的預設表示式中

無法處理該陳述式。

使用者回應

如果不是一定要用非固定或外部動作常式或表示式,請以沒有這些性質的常式替換。 如果一定要進行與非固定或外部動作常式或表示式相關的行為,請使用可使意思明確的其他形式的陳述式。

  • 不使用 BETWEEN 述詞,而使用採取比較述詞同等組合的對應陳述式(a>=b 且 a<=c,而不是 a 在 b 與 c 之間)。
  • 不用 simple-when-clause 或 DECODE 函數,而使用相對應的 searched-when-clause,其中會在每一個搜尋條件中指定常式。
  • 將 RATIO_TO_REPORT 函數的引數推送至巢狀查詢。
  • 請移除 GROUP BY 子句中的非固定或外部動作常式或表示式。 如果分組是以非固定或外部動作常式或表示式為基礎的結果直欄所需要的, 那麼請使用一個巢狀表格表示式或共用表格表示式,先為結果表格提供一個作為結果直欄的表示式。
  • 請移除 ORDER BY 子句中的外部動作常式。 如果直欄是查詢的結果集的一部分,請將 ORDER BY 子句中的表示式變更為排序鍵的簡單整數或簡單直欄名稱格式。
  • 請移除 FILTER 子句中的非固定或外部動作常式或表示式。
  • 請從程序定義的廣域變數或參數的預設子句中,移除非固定或外部動作常式或表示式。

sqlcode:-583

sqlstate:42845

SQL0584N 因為 NULL 關鍵字或 DEFAULT 關鍵字的使用無效,所以陳述式失敗。

解說

建立表格時,您可以定義一個以上直欄的預設值。當您將資料插入或合併至已針對部分直欄定義此預設行為的表格時,在 VALUES 子句中指定 "DEFAULT" 將會導致將預設值插入或合併至那些直欄。

您可以使用 NULL 關鍵字,指出陳述式中沒有特定直欄的資料。

DEFAULT 關鍵字及 NULL 關鍵字使用方式有一些需求及限制。這裡只是一些範例:

  • 範例 1:DEFAULT 關鍵字可以用於 INSERT 陳述式及 MERGE 陳述式的 VALUES 子句中。
  • 範例 2:對於不是 INSERT 陳述式一部分的 VALUES 子句,在每一個直欄中至少有一個橫列內必須有一個 NULL 以外的值,除非 NULL 的資料類型可以根據其用於陳述式的環境定義來進行解析。
  • 範例 3:在「聯合」環境中,無法在 INSERT 陳述式(其中物件為一暱稱)的 VALUES 子句中使用 DEFAULT 關鍵字。

使用者回應

修改陳述式,以支援的方式使用 NULL 關鍵字或 DEFAULT 關鍵字,然後重新提交陳述式。

sqlcode:-584

sqlstate:42608

SQL0585N 綱目名稱 schema-name 在 Set special-register 陳述式中出現多次。

解說

特別暫存器 special-register 的 SET 陳述式包括綱目 schema-name 多次。

無法處理該陳述式。

使用者回應

請驗證包含重複項目之 SET 陳述式中的清單。如果錯誤只是輸入了不正確的綱目名稱(碰巧與另一個項目重複),請輸入正確綱目名稱並重新發出陳述式。如果輸入的確是重複項目,則不需要動作。

sqlcode:-585

sqlstate:42732

SQL0586N special-register 特別暫存器的總長度不能超出 length

解說

定義的 special-register 長度小於 SET 陳述式上指定的值。 字串內容包括的每一綱目名稱用雙引號定界限,並用逗點與下一個綱目名稱分開。 在特別暫存器中,所有綱目名稱的字串總長度不能超過特別暫存器的最大長度。 SET PATH 或 SET CURRENT PACKAGE PATH 陳述式可能會導致此訊息。

無法處理陳述式或指令。

使用者回應

移除綱目名稱,減少總長度,以符合特別暫存器的長度。 如果失敗的陳述式為 SET PATH,且如果所有綱目名稱都是必要的, 則可能需要合併某些使用者定義函數、程序、方法或特殊類型, 以使 SQL PATH 上只需要較少的綱目名稱。

sqlcode:-586

sqlstate:42907

SQL0590N 在環境定義 context-tag 中指定的名稱 name 不是唯一的。

解說

在由 context-tag 所定義的環境定義中, 指定名稱 name 為參數、SQL 變數、游標、標籤或條件。名稱並非唯一的。

如果 context-tag 是 "BEGIN...END",則錯誤的環境定義是動態 SQL 複合陳述式。否則,錯誤的環境定義是觸發程式或常式,且 context-tag 是含有複合陳述式的觸發程式名稱或常式名稱。

  • 如果 name 是參數名稱, 則必須是參數清單及常式的 EXPRESSION AS 子句中唯一的。
  • 如果 name 是狀態變數名稱,則在狀態變數清單內必須是唯一的。
  • 如果 name 是 SQL 變數名稱、游標名稱或條件, 則必須是複合陳述式中唯一的。
  • 標籤必須是複合陳述式中唯一的,且與其巢狀陳述式的標籤不同。

使用者回應

請變更為一個專用的名稱。

sqlcode:-590

sqlstate:42734

SQL0593N 必須對 ROW CHANGE TIMESTAMP 直欄、ROW BEGIN 直欄、ROW END 直欄或期間直欄指定 NOT NULL。column-name

解說

列變更時間戳記、row-begin 及 row-end 直欄不支援空值。在 CREATE TABLE 或 ALTER TABLE 陳述式上定義這類直欄時,必須對這些直欄定義 NOT NULL 子句。

期間直欄必須定義為 NOT NULL。

無法執行陳述式。

使用者回應

變更陳述式,以指定 NOT NULL 給直欄 column-name

sqlcode:-593

sqlstate:42831

SQL0595W 隔離層次 requested-level 已提升到 escalated-level

解說

DB2 不支援所指定的隔離層次。它已提升到 DB2 可支援的次高隔離層次。

使用者回應

若要避免此項警告,請指定 DB2 可支援的隔離層次。DB2 可支援隔離層次「可重複讀取 (RR)」、「讀取穩定性 (RS)」、「游標穩定性 (CS)」和「未確定讀取 (UR)」。

sqlcode:+595

sqlstate:01526

SQL0597N 無法擷取 DATALINK 值。原因碼 = reason-code

解說

無法擷取 DATALINK 值。可能的原因碼如下:
01
DB2 Data Links Manager 未授與 DB2 使用者某些使用權, 因此使用者無法擷取寫入記號內含的 DATALINK 值,來修改被 DATALINK 值參考的檔案。

使用者回應

請根據下列的原因碼來採取行動。
01
請聯絡 DB2 Data Links Manager 管理者,以授與此檔案的寫入存取權。

sqlcode:-0597

sqlstate:42511

SQL0598W 現存索引 name 被用作主要索引鍵的索引或唯一鍵。

解說

定義中包含主要索引鍵或唯一鍵的 ALTER TABLE 操作需要索引,而指示的索引與所需的索引相符。

如果未分割的主要索引鍵或未分割的唯一索引鍵索引的索引說明所識別的直欄集(任何順序),與主要索引鍵或唯一索引鍵相同,並指定為唯一的,則會視為相符的索引說明(不論是遞增或遞減規格)。

不過,其直欄不是分割鍵直欄之超集的分割索引,則不會視為相符。

陳述式已成功地處理。

使用者回應

不需要任何動作。

sqlcode:+598

sqlstate:01550

SQL0599W 未替以長字串資料類型為基礎的特殊類型建立比較函數。

解說

未替以長字串資料類型(BLOB、CLOB、DBCLOB、LONG VARCHAR 或 LONG VARGRAPHIC)為基礎的特殊類型建立比較函數,因為沒有對應的函數可供 這些內建資料類型使用。

這是警告情況。陳述式已成功地處理。

使用者回應

不需要任何動作。

sqlcode:+599

sqlstate:01596

SQL0600N 無法產生常式 routine-name,因為標記重複,或因為這個常式會置換現存的常式。

解說

在 CREATE 或 ALTER 作業期間,無法建立系統所產生的強制轉型函數、觀察方法、 轉換方法或建構子函數,因為綱目中已存在另一個名稱或標記相同的函數或方法,或因為該方法或函數會置換現存的方法。

使用者回應

請為可能會造成衝突的使用者定義類型、屬性或強制轉型函數選擇其他的名稱,或是捨棄與無法產生的函數或方法名稱相同的函數或方法。

sqlcode:-600

sqlstate:42710

SQL0601N 要建立的物件名稱與類型 type 的現存名稱 name 相同。

解說

CREATE 或 ALTER 陳述式嘗試建立或新增物件 name,而應用程式伺服器上或同一陳述式中,已有類型為 type 的同名物件存在。

如果 type 為 FOREIGN KEY、PRIMARY KEY、 UNIQUE 或 CHECK CONSTRAINT,則 name 為 ALTER NICKNAME、ALTER TABLE、CREATE NICKNAME 或 CREATE TABLE 陳述式中指定的限制名稱,或由系統來產生。

如果 type 是 ROLE,則名稱是 CREATE 或 ALTER ROLE 陳述式中指定的角色名稱。

如果 type 是 DATA PARTITION,則 name 是 ALTER TABLE 或 CREATE TABLE 陳述式中所指定的資料分割區名稱。

當使用 REGISTER 指令或 XSR_REGISTER、XSR_DTD 或 XSR_EXTENTITY 其中一個程序,來登錄 XML 綱目儲存庫物件時,也會發生此錯誤。當 XSROBJECT 的名稱已存在時,會發生此錯誤。

聯合系統使用者:有些資料來源不會提供適當的值給 nametype 訊息記號。 在這些狀況下,nametype 的格式如下:"OBJECT:<data source> TABLE/VIEW",以及 "UNKNOWN"(指出所指定資料來源的實際值未知)。

如果 type 是許可權,則 name 是 CREATE PERMISSION 陳述式中指定的許可權名稱。

如果 type 是遮罩,則 name 是 CREATE MASK 陳述式中指定的遮罩名稱。

如果 type 是成員子集,則 name 是 CALL SYSPROC.WLM_CREATE_MEMBER_SUBSET 陳述式中指定的成員子集名稱。

無法處理該陳述式。未建立任何新物件,且未改變或修改現存的物件。

使用者回應

請捨棄現存的物件,或是選擇另一個名稱給新物件。

聯合系統使用者: 如果陳述式為 CREATE FUNCTION MAPPING 或 CREATE TYPE MAPPING 陳述式, 則使用者也可以考慮不提供類型對映名稱,而系統將會自動產生一個唯一的對映名稱。

sqlcode:-601

sqlstate:42710

SQL0602N 未建立或變更索引,因為指定太多的直欄、期間或表示式型索引鍵。

解說

索引中可包括的直欄數有其上限。給定索引中容許的直欄數受到下列因素影響:表格類型,以及索引中所含的直欄是否使用隨機排序。

嘗試建立索引、變更索引或建立索引擴充,而且索引中產生的直欄數將會超出上限時,即會傳回此訊息。

聯合系統使用者:

  • 資料來源不同時,索引中容許的直欄數限制也會不同。
  • 在聯合伺服器或資料來源上可能會偵測到此問題。

使用者回應

檢閱與索引中直欄數上限相關的限制。然後修改索引定義,使其具有較少的直欄。

聯合系統使用者:變更索引定義,以遵守資料來源的直欄限制。

sqlcode:-602

sqlstate:54008

SQL0603N 無法建立唯一的索引,因為表格所包含的資料會導致重複索引項目。

解說

在 CREATE INDEX 陳述式中定義的索引無法建立為唯一索引,因為指定的表格已包含其值與識別直欄及期間重複的橫列。如果在 XML 直欄上定義索引,單一的 XML 文件可能會產生重複的索引值。

如果分割表格有新附加的分割區(亦即,SYSDATAPARTITIONS 型錄表格的 STATUS 直欄中,值為 'A' 的分割區),則新附加的分割區中可能存在重複索引項目。即使您還無法檢視分割區中的資料,CREATE INDEX 陳述式也會在新附加的表格分割區上建立索引分割區。

聯合系統使用者:資料來源也可以偵測到這種狀況。

無法處理該陳述式。未建立指定的索引。

使用者回應

檢查資料以決定是否允許重複的資料。或者,考慮建立非 UNIQUE 索引。

如果已分割索引且表格上有新附加的分割區,請執行 SET INTEGRITY 陳述式,讓新附加的分割區在線上。SET INTEGRITY 陳述式可能由於違反其他限制而移除重複資料,所以您應該重新發出 CREATE INDEX 陳述式。如果未重新建立唯一索引,請檢查會導致重複索引項目的資料。

sqlcode:-603

sqlstate:23515

SQL0604N 直欄、特殊類型、結構化類型、陣列類型、結構化類型屬性、常式、強制轉型目標類型、類型對映或廣域變數 data-item 的長度、精準度或小數位數屬性無效。

解說

CREATE 或 ALTER 陳述式中的資料類型說明或 CAST 說明中有錯誤。 可能指定了無效的長度、精確度或小數位數屬性,或可能是資料類型本身不正確或不允許在此環境定義中。 錯誤的位置由 data-item 提供如下:

  • 若為 CREATE 或 ALTER TABLE 陳述式,data-item 會提供包含錯誤的直欄名稱,或包含錯誤的資料類型。如果直欄資料類型是結構化或 XML 資料類型,則 INLINE LENGTH 值必須至少為 292,且不得超出 32673。若為 LOB 資料類型,則 INLINE LENGTH 值必須至少為 LOB 描述子的大小(請參見 CREATE TABLE 陳述式),且不得超出 32673
  • 若為 CREATE FUNCTION 陳述式,data-item 是識別陳述式中問題區域的記號。例如,"PARAMETER 2" 或 "RETURNS" 或 "CAST FROM"。 在某些情況下,也可能是含有錯誤的資料類型。
  • 若為 CREATE DISTINCT TYPE 陳述式,data-item 會提供正在定義的類型名稱,或是含有錯誤的來源資料類型。
  • 若為 CREATE TYPE(陣列)陳述式,data-item 會提供包含錯誤的資料類型。方括弧 ([]) 內指定的整數值必須大於或等於 1,但不得大於 2147483647。
  • 若為 CREATE 或 ALTER TYPE 陳述式,data-item 會提供包含錯誤的屬性類型,或含有不正確行內長度值的結構化類型名稱。行內長度不能小於 292,也不能小於該結構化類型的建構子函數所傳回的大小。
  • 若為 CREATE VARIABLE 陳述式,data-item 會提供具有不正確資料類型的變數名稱。廣域變數的資料類型可以是任何內建資料類型,但 LONG 類型、LOB、ARRAY 及結構化類型除外。支援特殊類型及參照類型。
  • 若為 CAST(表示式 AS 資料類型),則 data-item 是 CAST 或含有錯誤的資料類型。
  • 若為 XMLCAST(表示式 AS 資料類型),則 data-item 是 XMLCAST 或含有錯誤的資料類型。
  • 若為反向類型對映,則 [p..p] 表示式無法用於遠端資料類型。例如,下列陳述式(反向類型對映)不正確。
    CREATE TYPE MAPPING tm1
           FROM SERVER drdasvr TYPE CHAR([1..255])
           TO SYSIBM.VARCHAR
    

    而下列陳述式(正向類型對映)正確。

    CREATE TYPE MAPPING tm1
          TO SERVER drdasvr
          TYPE CHAR([1..255])
          FROM SYSIBM.VARCHAR
    

聯合系統使用者: 如果陳述式為 CREATE TYPE MAPPING 陳述式, 則表示曾在本端資料類型或遠端資料類型的類型屬性無效時,嘗試建立類型對映。 可能的原因包括:

  • 區域長度/精確度設為 0 或負的值。
  • 指定長度/精確度屬性給資料類型,如日期/時間/時間戳記、浮點數或整數。
  • 指定小數位數屬性給資料類型,如字元、日期/時間/時間戳記、浮點數或整數。
  • 指定 FOR BIT DATA 子句給非字元類型。
  • 為不是 Informix 日期時間的遠端類型,將遠端精準度設為 0。
  • Informix 日期時間類型的類型對映正在使用無效的欄位限定元。
  • 結束值小於精確度/小數位數範圍中的起始值。

無法處理該陳述式。

使用者回應

請更正語法,然後再試一次。

sqlcode:-604

sqlstate:42611

SQL0605W 未建立索引,因為已存在具有相符定義的索引 name

解說

CREATE INDEX 陳述式試圖建立符合現存索引定義的新索引。

若兩個索引定義所識別的相同直欄,具有相同排序、相同遞增或遞減規格,且二者都指定為唯一,或僅新索引不指定為唯一,則這二個索引定義相符。

若兩個索引定義所識別的相同直欄,具有相同排序、相同或相反的遞增、遞減索引鍵次序,且至少有一個索引支援正向及反向掃描,則這二個索引定義也相符。

針對分割表格,如果兩個索引定義的其中一個是已分割的,而另一個是未分割的,則即使所有其他規格都相符,這兩個索引定義也不符。在相同的表格上,可以同時存在其他相似定義的已分割及未分割索引。

未建立新索引。

使用者回應

不需要動作,除非現存的索引 name 不是合適的索引。 例如,若現存的索引不容許反轉掃描,而所需的索引可容許的話, 則現存的索引 name 並不適合(反之亦然)。在這種情況下,必須先捨棄索引 name,才能建立所需的索引。

sqlcode:+605

sqlstate:01550

SQL0606N COMMENT ON 或 LABEL ON 陳述式失敗, 因為所指定的表格或直欄並非為 owner 所擁有。

解說

嘗試註解或標示不存在的表格或直欄,或不是訊息文字所指定之擁有者所擁有的表格或直欄。

已停止處理 SQL 陳述式。

使用者回應

請更正陳述式。 重試。

sqlcode:-606

sqlstate:42505

SQL0607N operation 並沒有定義給系統物件。

解說

SQL 陳述式中指定的 operation 不能在系統物件上執行。您嘗試進行下列動作之一:

  • ALTER(變更)或 DROP(捨棄)系統擁有的物件(如系統型錄表格、內建函數或內建資料類型),或為系統擁有的物件 TRANSFER OWNERSHIP(傳送所有權)
  • COMMENT ON(加註)系統擁有的內建函數。
  • 在系統型錄表格上 INSERT(插入)、DELETE(刪除)或 TRUNCATE(截斷)。
  • 直接在系統型錄表格上 UPDATE(更新)。 系統型錄表格的子集中,有一些直欄是可以更新的。 對於在這些型錄表格上的 UPDATE 作業,應使用 SYSSTAT 綱目中的可更新視圖。 如需可更新型錄視圖 (SYSSTAT 視圖) 的說明,請參閱 SQL Reference。
  • 在系統表格上 CREATE(建立)或 DROP(捨棄)索引
  • 在系統表格上 CREATE(建立)觸發程式
  • 不可更新的系統表格在包含 FOR UPDATE 子句的 SELECT 陳述式中的 FROM 子句中識別。 如需可更新系統型錄的清單,請參閱 SQL Reference。
  • DROP(捨棄)或 ALTER(改變)系統表格空間。
  • DROP(捨棄)或 ALTER(改變)系統資料庫分割區群組。
  • DROP(捨棄)系統預設工作量。
  • ALTER(變更)已指定 ENABLE、DISABLE、POSITION、ADD 或 DROP 選項的 SYSDEFAULTUSERWORKLOAD。
  • ALTER(變更)已指定 COLLECT 以外選項的 SYSDEFAULTADMWORKLOAD。
  • ALTER(變更)SYSDEFAULTADMWORKLOAD 或 SYSDEFAULTUSERWORKLOAD 已指定為 POSITION BEFORE 或 AFTER 選項值的工作量。
  • REDISTRIBUTE(重新配送)IBMCATGROUP 或 IBMTEMPGROUP 資料庫分割區群組。
  • 傳送名稱以 "SYS" 為開頭的綱目上的所有權。
  • CREATE(建立)預設管理工作量 SYSDEFAULTADMWORKLOAD 的工作動作集或臨界值。
  • INSERT(插入)至「管理作業排程程式」(ATS) 所使用的 SYSTOOLS.ADMINTASKS 表格。
  • UPDATE(更新)「管理作業排程程式」(ATS) 所使用的 SYSTOOLS.ADMINTASKS 表格中的受限直欄。
  • ALTER(變更)「管理作業排程程式」(ATS) 所使用的 SYSTOOLS.ADMINTASKS 表格。

在保留綱目中的任何表格上,都無法執行線上管理移動表格作業。

無法處理該陳述式。

使用者回應

請勿嘗試修改任何系統物件,除了系統型錄表格中能透過可更新的 SYSSTAT 視圖而更新的直欄之外。 如需相關資訊,請參閱 SQL Reference。

sqlcode:-607

sqlstate:42832

SQL0612N name 名稱重複。

解說

發出的陳述式中,有相同的名稱在不允許重複的地方出現多次。 這些名稱出現的地方,視陳述式類型而有不同。

  • CREATE TABLE 陳述式不能使相同的直欄名稱定義給兩直欄。
  • 用來指定表格分割作業的 CREATE TABLE 陳述式,不能為二個資料分割區定義相同的資料分割區名稱。
  • ALTER TABLE 陳述式指定的分割區名稱若與表格中的現存資料分割區的分割區名稱相同, 將無法新增或連接資料分割區至表格。
  • CREATE VIEW 陳述式或共用表格表示式定義不能在直欄名稱清單中有同樣的直欄名稱。若未指定任何直欄名稱清單,那麼視圖的選取清單中,各直欄的直欄名稱必須是唯一的。
  • ALTER TABLE 陳述式不能使用已經存在的或與另一正要新增的直欄相同的直欄名稱,新增一直欄至表格。此外,直欄名稱只能在單一 ALTER TABLE 陳述式的一個 ADD、DROP COLUMN 或 ALTER COLUMN 子句中參照。
  • CREATE INDEX 不能多次指定一直欄名稱作為索引鍵或索引 INCLUDE 直欄的一部分。
  • CREATE TRIGGER 不能在造成更新觸發程式啟動的直欄清單中,多次指定一直欄名稱。
  • CREATE TABLE OF 陳述式的 REF IS 直欄和結構化類型的任何屬性,不能定義相同的名稱。
  • CREATE TYPE 陳述式不能針對 ROW 資料類型的兩個欄位,或者結構化類型的兩個屬性,定義相同的名稱。類型及所有超類型的欄位及屬性名稱,必須是唯一名稱。
  • ALTER TYPE 陳述式為結構化類型新增屬性時, 不能與類型、類型的任何子類型、或另一個新增屬性的名稱相同。 屬性名稱不能與結構化類型建立之任何表格中的 REF IS 直欄同名。另外,屬性名稱只能在單一 ALTER TYPE 陳述式的一個 ADD 或 DROP ATTRIBUTE 子句中參照。
  • CREATE INDEX EXTENSION 陳述式不允許用相同的名稱定義兩個參數。
  • 僅能在單一 ALTER NICKNAME 陳述式中的 ALTER COLUMN 子句參照直欄名稱。
  • XMLQUERY、XMLEXISTS 或 XMLTABLE 引數清單包含兩個同名的引數。
  • XMLTABLE 直欄清單包含兩個同名的直欄。
  • SELECT 陳述式的類型化相關性子句,不可包含兩個同名的直欄。
  • CREATE 或 ALTER TABLE 陳述式在唯一索引鍵中,不可指定相同的期間一次以上。
  • CREATE 或 ALTER TABLE 陳述式不可定義同名的期間及直欄。
  • 在相同 ALTER TABLE 陳述式中新增或變更期間的同時,無法捨棄期間。例如,相同的期間名稱不能同時出現在相同 ALTER TABLE 陳述式的 DROP PERIOD 子句及 ADD PERIOD 子句中。

無法處理該陳述式。

使用者回應

請視陳述式類型,指定適當的唯一名稱。

sqlcode:-612

sqlstate:42711

SQL0613N name 所識別的主要索引鍵、唯一索引鍵或表格分割鍵太長或具有太多直欄及期間。

解說

此項錯誤是由下列原因之一引起的:

  • name 在 PRIMARY KEY 子句或 UNIQUE 子句中識別的直欄內部長度總和超過索引鍵長度限制,或者直欄數目以及兩倍期間數目超過上限 64。此外,不能使用 LONG VARCHAR 直欄定義主要索引鍵或唯一鍵。 如果在類型化表格中定義主要索引鍵或唯一限制,則則索引作業會進行一個額外的動作來將指定直欄的最大值減少為 63,並將長度限制為 4 個位元組。
  • PARTITION BY 子句中的直欄數超出上限 16。

name 是主要索引鍵或唯一限制的限制名稱(如果已指定)。如果未指定限制名稱, name 就是主要索引鍵或唯一限制子句中指定的第一個直欄名稱後面再加三個句點。

索引鍵長度限制取決於索引所使用之表格空間的分頁大小:

最大鍵值長度    分頁大小
--------------  ---------
1K              4K
2K              8K
4K              16K
8K              32K

若為表格分割鍵,name 就是超出限制之直欄的直欄名稱。

無法處理該陳述式。

使用者回應

透過刪除一個或多個索引鍵直欄或期間,修改主要索引鍵、唯一索引鍵或表格分割鍵定義,以符合直欄限制 64 及索引鍵長度限制。

sqlcode:-613

sqlstate:54008

SQL0614N 無法建立或變更索引或索引擴充 index-name,因為所指定直欄的組合長度太長。

解說

無法建立或變更索引,因為索引鍵直欄的內部長度總和超過索引鍵長度限制。此外,不能使用 LONG VARCHAR、LONG VARGRAPHIC 或 LOB 直欄建立索引。 如果在類型表格中定義索引,則索引作業會進行一個額外的動作來將長度上限減少 4 個位元組。 變更一個以上的直欄的資料類型的 ALTER TABLE 或 ALTER NICKNAME 陳述式,也可能變更索引。

無法建立索引擴充,因為 GENERATE KEY 函數所傳回的直欄總和超過索引鍵長度限制。

索引鍵長度限制取決於索引所使用之表格空間的分頁大小:

最大鍵值長度    分頁大小
--------------  ---------
1K              4K
2K              8K
4K              16K
8K              32K

無法處理該陳述式。未建立指定的索引或索引擴充,或是無法變更表格或暱稱。

使用者回應

若要修改索引定義或變更直欄,請消除一個或多個索引鍵直欄, 並減少相關欄位長度到允許的最大值。 請為索引擴充定義指定不同的 GENERATE KEY 函數,或是重新定義函數,以縮減傳回橫列的長度。

sqlcode:-614

sqlstate:54008

SQL0615N 無法捨棄類型為 object-type 的物件 object-name,因為它目前使用中。

解說

當物件的 DROP 陳述式正在使用中時,無法發出這個陳述式。

無法處理該陳述式。未捨棄物件。

使用者回應

請關閉直接或間接依賴物件 object-name 的所有游標,然後重新提交陳述式。

若為暫存表格空間,請在表格空間不在使用中時,重新提交陳述式。

sqlcode:-615

sqlstate:55006

SQL0620N CREATE TABLE 陳述式失敗,因為 user-id 沒有具有少於 255 個表格的專用可回復 dbspaces。

解說

dbspace 名稱沒有指定在 CREATE TABLE 陳述式中,所以資料庫管理程式會嘗試尋找 user-id 所擁有的專用 dbspace。在下列其中一種情形下,會出現這個訊息:

  1. user-id 的 DB2 for VM 資料庫中,找不到專用的 dbspaces。
  2. 找到了一個或數個 user-id 的專用 dbspaces, 但是每一個都含有 255 個表格。
  3. 在不可回復的儲存池中找到專用的 dbspaces。 若 CREATE TABLE 陳述式沒有指定 dbspace 名稱, 就只能使用存在於可回復之儲存池中的專用 dbspaces。

已停止處理 SQL 陳述式。

使用者回應

針對這三種可能的狀況,我們的建議是:

  1. 在可回復的儲存池中取得專用的 dbspace。您可能會需要資料庫管理者的協助。
  2. 將位於可回復儲存體集區中的專用 dbspace 中的表格捨棄,以釋出登錄,或採取 (1) 所指出的動作。
  3. 如果您想要在不可回復之儲存池中的 dbspace 中建立表格,請在 CREATE TABLE 指令上指定 dbspace 名稱。 否則,請採取 (1) 所指出的動作。

然後重新執行 CREATE TABLE 陳述式。

如果可以的話,請取得使用者的專用 dbspace。

sqlcode:-620

sqlstate:57022

SQL0622N 對於此資料庫,子句 clause 無效。

解說

因為指出的子句與此資料庫的定義性質不相容,所以它無效。

可能原因:
  • 當連接至使用 Unicode 字碼頁建立的資料庫時,無法指定 CCSID ASCII 及 PARAMETER CCSID ASCII。
  • 在資料庫配置中指定替代的對照順序之前, 當連接至使用非 Unicode 字碼頁建立的資料庫時, 無法指定 CCSID UNICODE 及 PARAMETER CCSID UNICODE。
  • 當連接至使用非 Unicode 字碼頁建立的資料庫時, 無法在此陳述式中指定 CCSID UNICODE 或 PARAMETER CCSID UNICODE。
  • 只有當連接使用單一位元組字碼頁建立的資料庫時,才可以指定 FOR SBCS DATA。
  • 只有當連接使用雙位元組或 Unicode 字碼頁建立的資料庫時,才可以指定 FOR MIXED DATA。
  • 使用資料庫名稱來指定 IN database-name.table-space-name 或 IN DATABASE database-name 子句, 該資料庫名稱與應用程式目前連接的資料庫名稱不相配。

無法處理該陳述式。

使用者回應

變更或移除子句並重新發出 SQL 陳述式。

若要在非 Unicode 資料庫中容許 Unicode 物件,請更新資料庫配置來指定替代的對照順序 (ALT_COLLATE)。

sqlcode:-622

sqlstate:56031

SQL0623N 表格 name 上已有叢集索引。

解說

CREATE INDEX 陳述式會在指定的表格中建立第二個叢集索引。 給定的表格只能有一個叢集索引。

無法執行陳述式。

使用者回應

檢查表格 name 中現有叢集索引的身分和有效性。考慮建立索引(不含 CLUSTER 屬性)。

sqlcode:-623

sqlstate:55012

SQL0624N 表格 name 已具有使用指定直欄及期間的主要索引鍵或唯一限制。

解說

無法在 ALTER TABLE 陳述式中定義主要索引鍵或唯一限制,因為指出的表格已具有此類型的索引鍵或限制。

無法執行陳述式。

使用者回應

表格不可具有多個主要索引鍵。表格不可具有與現有限制重複的唯一限制。

sqlcode:-624

sqlstate:42889

SQL0628N 出現有涉及 clause-type 子句的多個或衝突關鍵字。

解說

陳述式為何會有此種偵錯狀況,有幾個可能的原因。 clause-type 值會指出原因。可能的原因包括:

  • 同一陳述式中,可能無法如指定某個其他關鍵字般地指定此關鍵字。
  • 此關鍵字可能是一組關鍵字的一部分,而其中未強制指定關鍵字的順序。在這樣一組關鍵字中,可能會在指定一個關鍵字時也指定了相衝突的關鍵字。
  • 關鍵字可能出現多次,各有不同的相關聯值。
  • 關鍵字可能在相同陳述式中,需要未指定的其他特定關鍵字規格。
  • 當「變更」物件時,指定了與現存的物件內容相衝突的關鍵字。
  • ALTERING(變更)分割表格時,不支援將 ADD、ATTACH 及 DETACH 子句用於任何其他子句。
  • 當使用 LIKE table-name 子句(其中 table-name 識別暱稱)CREATING(建立)或 DECLARING(宣告)表格時,INCLUDING COLUMN DEFAULTS 子句無效,而且不會複製直欄預設值。
  • 參數模式 OUT 或 INOUT 已用來在不支援 OUT 或 INOUT 參數的函數中定義參數。
  • 正在搭配使用 CREATE PROCEDURE 陳述式與 RETURNS GENERIC TABLE 子句來建立一般表格函數,但發生下列其中一個錯誤:
    • 已使用 LANGUAGE 子句指定 JAVA 以外的語言
    • 已使用 PARAMETER STYLE 子句指定 DB2GENERAL 以外的參數樣式
  • CREATING(建立)觸發程式時,已多次指定相同的觸發程式事件。
  • CREATING(建立)表格空間時,'USING STOGROUP' 子句無法與 DMS 或 SMS 表格空間搭配使用
  • CREATING(建立)表格空間時,無法對暫存自動儲存體表格空間變更 STOGROUP
  • CREATING(建立)表格空間時,無法對暫存表格空間設定 DATA TAG
  • CREATING(建立)表格空間時,無法對系統型錄表格空間設定 DATA TAG
  • CREATING(建立)或 ALTERING(變更)表格時,無法對結果表格或具體化查詢定義以 LIKE 指定 VERSIONING。
  • 當 ALTERING(變更)使用隨機產生方法所產生的隨機配送表時,不支援 DROP DISTRIBUTION 子句。

使用者回應

請檢查陳述式是否符合定義給陳述式的語法及規則。請更正任何出現重複或衝突關鍵字的無效情況。

sqlcode:-628

sqlstate:42613

SQL0629N 無法指定 SET NULL,因為直欄或 FOREIGN KEY name 不能包含空值。

解說

ALTER TABLE 陳述式或指出的 FOREIGN KEY 子句的 SET NULL 選項無效。若為 ALTER TABLE 陳述式,則無法變更直欄 name 以不容許 NULL 值,因為此直欄是動作類型為 'on delete set NULL' 之外部索引鍵限制中最後一個可為空值的直欄。

若為 FOREIGN KEY 子句,則索引鍵直欄均不容許空值。name 是限制名稱(如果已指定)。如果未指定限制名稱, name 就是 FOREIGN KEY 子句直欄清單中指定的第一個直欄名稱後面再加三個句點。

無法處理該陳述式。

使用者回應

若為 ALTER TABLE 陳述式,請移除外部索引鍵限制,或將此限制中的至少一個其他直欄變更為「可為空值」。若為 FOREIGN KEY 子句,請變更索引鍵直欄,以容許指定空值,或變更刪除規則。

sqlcode:-629

sqlstate:42834

SQL0631N FOREIGN KEY name 太長或有太多直欄。

解說

CREATE TABLE 陳述式中,FOREIGN KEY 子句識別的直欄內部長度總和超過索引鍵長度限制,或識別的直欄數超過 64。此外,不能使用 LONG VARCHAR 直欄定義外部索引鍵值。

FOREIGN KEY 子句指定的 name 是限制名稱。如果未指定限制名稱, name 就是 FOREIGN KEY 子句直欄清單中指定的第一個直欄名稱後面再加三個句點。

索引鍵長度限制取決於索引所使用之表格空間的分頁大小:

最大鍵值長度    分頁大小
--------------  ---------
   1K              4K
   2K              8K
   4K              16K
   8K              32K

無法處理該陳述式。

使用者回應

若要修改外部索引鍵定義,請消除一個以上的索引鍵直欄,並符合 64 的直欄限制及索引鍵長度限制。

sqlcode:-631

sqlstate:54008

SQL0632N FOREIGN KEY name 無效,因為由於刪除規則限制, 這個表格不能定義為表格 table-name 的相依項(原因碼 = reason-code)。

解說

無法定義參照限制,因為不能將 CREATE TABLE 或 ALTER TABLE 陳述式的物件表格定義為表格 table-name 的相依項,可能的原因如下:
  • (01) 這是自行參照的關係,而自行參照關係已經存在並包含 SET NULL 刪除規則。
  • (02) 此關係形成兩個或多個表格的循環,造成要刪除的表格與其本身連接 (此循環中所有其他刪除規則將為 CASCADE)。
  • (03) 此關係造成要刪除的表格經由多重關係而連接至指示的表格,而現存關係的刪除規則為 SET NULL。

現存關係的刪除規則造成錯誤,不是 CREATE TABLE 或 ALTER TABLE 陳述式的 FOREIGN KEY 子句中指定的刪除規則。

FOREIGN KEY 子句指定的 name 是限制名稱。如果未指定限制名稱, name 就是 FOREIGN KEY 子句直欄清單中指定的第一個直欄名稱後面再加三個句點。

無法處理該陳述式。

使用者回應

可能的話,從 CREATE TABLE 或 ALTER TABL 陳述式中消除該一特定的 FOREIGN KEY 子句。

sqlcode:-632

sqlstate:42915

SQL0633N FOREIGN KEY name 的刪除規則必須是 delete-rule(原因碼 = reason-code)。

解說

CREATE TABLE 或 ALTER TABLE 陳述式中,FOREIGN KEY 子句中指定的刪除規則無效。 由於下列原因碼之一,需要指定的刪除規則:
  • (01) 參照限制是自行參照,而現存的自行參照限制有指示的刪除規則(NO ACTION、 RESTRICT 或 CASCADE)。
  • (02) 參照限制是自行參照,而表格是一關係中的相依項,並包含 CASCADE 刪除規則。
  • (03) 此關係會使要刪除的表格經由多重關係連接到同一表格,而這種關係必須有同樣的刪除規則(NO ACTION、RESTRICT 或 CASCADE)。

FOREIGN KEY 子句指定的 name 是限制名稱。如果未指定限制名稱, name 就是 FOREIGN KEY 子句直欄清單中指定的第一個直欄名稱後面再加三個句點。

無法處理該陳述式。

使用者回應

可能的話,請變更刪除規則。

sqlcode:-633

sqlstate:42915

SQL0634N FOREIGN KEY name 的刪除規則不得為 CASCADE(原因碼 = reason-code)。

解說

由於下列原因碼之一,CREATE TABLE 或 ALTER TABLE 陳述式中, FOREIGN KEY 子句中指定的 CASCADE 刪除規則無效:
  • (01) 自行參照限制存在,並包含刪除規則 SET NULL、NO ACTION 或 RESTRICT。
  • (02) 此關係會形成循環,它會造成要刪除的表格連接到本身。 循環中的現存刪除規則之一不是 CASCADE,所以,如果刪除規則不是 CASCADE 時, 此關係或許是可以定義的。
  • (03) 此關係會造成另一要刪除的表格, 經由刪除規則不同或刪除規則等於 SET NULL 的多重路徑而連接到同一表格。

    FOREIGN KEY 子句指定的 name 是限制名稱。如果未指定限制名稱, name 就是 FOREIGN KEY 子句直欄清單中指定的第一個直欄名稱後面再加三個句點。

無法處理該陳述式。

使用者回應

可能的話,請變更刪除規則。

sqlcode:-634

sqlstate:42915

SQL0636N 為資料分割區 partition-name 指定的範圍無效。原因碼 = reason-code

解說

由於下列其中一個原因碼,針對分割鍵所指定的範圍無效:

1

分割區的 STARTING 值大於 ENDING 值。 通常分割區的 STARTING 值必須小於 ENDING 值。 然而,如果二個界限都包含在內,則開始值可以等於結束值。 但不包括含有 MINVALUE 或 MAXVALUE 的界限。例如,定義為 STARTING (1, MINVALUE) ENDING (1, MINVALUE) 的分割區是不合格的(原因碼 1),因為二個界限值相等,而且都不包括在內。 即使只有明確地指定一個界限(例如:只有 STARTING 界限),當結果界限違反此規則時(產生遺漏的界限之後),還是會傳回這個原因碼。

3

不是以最低的鍵值來指定分割區的 STARTING 值。

4

不是以最高的鍵值來指定分割區的 ENDING 值。

5

指定前一個 ENDING 值時,沒有指定 STARTING 值。

7

僅適用 DB2 UDB for iSeries:不是以遞增順序來指定資料分割區。

9

分割區的 STARTING 或 ENDING 值太長。表格分割鍵限制值的總長度必須小於或等於 512 位元組。

10

範圍與另一個分割區重疊。每一個資料分割區都必須要有定義明確的開始及結束界限,而且每一個資料值都只能放在一個資料分割區中。 此外,如果在一個分割區的結束界限和下一個分割區的開始界限中使用相同的值(MINVALUE 或 MAXVALUE 除外),則至少必須將其中一個界限定義為 EXCLUSIVE。 針對現存的表格,若要判定分割區的界限為 INCLUSIVE 或 EXCLUSIVE,請查詢 SYSCAT.DATAPARTITIONS 型錄表格,如下所示(將 'table-schema' 及 'table-name' 替換成適當的值):

SELECT
DATAPARTITIONID, DATAPARTITIONNAME,
LOWINCLUSIVE, LOWVALUE, HIGHINCLUSIVE,
HIGHVALUE
FROM SYSCAT.DATAPARTITIONS
WHERE TABSCHEMA='table-schema'
AND TABNAME='table-name'
ORDER BY SEQNO
11

若已指定 EVERY 子句,則無法指定 MINVALUE 及 MAXVALUE。

12

為 EVERY 子句指定的值必須大於零,而且要大到足以定義唯一的分割區。

13

在分割區的 STARTING 或 ENDING 值中,不能在 MINVALUE 或 MAXVALUE 後面指定常數。 一旦指定了 MINVALUE 或 MAXVALUE,所有後續的(較不重要的)直欄就必須分別為 MINVALUE 或 MAXVALUE。

14

當指定 EVERY 子句時,無法將小數浮點數特殊值指定為啟動連結、結束連結或增量。

15

分割區的 STARTING 值及 ENDING 值不能是空值。請注意,當 varchar2_compat 資料庫配置參數設為 ON 時,長度為零的字串值會視為空值。

如果 partition-name 的值格式為 "PARTITION=value",當錯誤發生時,將無法提供分割區名稱。 所提供的值會識別分割區清單子句中之不當分割區的開始或結束值。

無法處理該陳述式。

使用者回應

更正資料分割區的無效範圍。

sqlcode:-636

sqlstate:56016

SQL0637N 使用的關鍵字 keyword 無效。

解說

對於所指示關鍵字的子句,SQL 陳述式包含重複或衝突的指定。例如:

  • 在直欄定義中只能指定 DEFAULT、UNIQUE 及 PRIMARY 一次。
  • UNIQUE 及 PRIMARY 不能同時指定給同一直欄定義。
  • 在 CREATE TABLE 陳述式中只能指定 PRIMARY 一次。
  • 指定給 PREPARE 陳述式的屬性字串中,不能指定重複選項,或有衝突的選項。
  • ACTIVATE 或 DEACTIVATE ROW ACCESS CONTROL 只能指定一次
  • ACTIVATE 或 DEACTIVATE COLUMN ACCESS CONTROL 只能指定一次

無法處理該陳述式。

使用者回應

請更正重複或衝突指定的陳述式。

sqlcode:-637

sqlstate:42614

SQL0638N 無法建立表格 name,因為沒有指定任何直欄定義。

解說

CREATE TABLE 陳述式未包含任何直欄定義。

無法處理該陳述式。

使用者回應

請新增一個或多個直欄定義至陳述式。

sqlcode:-638

sqlstate:42601

SQL0644N 在陳述式 statement-type 中,指定給關鍵字 keyword 的值無效。

解說

關鍵字 keyword 後面有一個由 statement-type 的說明所允許的無效值。 若為數值,該值可能超出所定義的範圍。如為其他類型,該值不在定義的有效值集合中。

使用者回應

請根據 statement-type 的參照文件決定有效值有哪些,然後作適當的變更。

sqlcode:-644

sqlstate:42615

SQL0647N 緩衝池 bufferpool-name 目前不在作用中。

解說

現行資料庫環境尚未啟用緩衝池 bufferpool-name。 現行資料庫環境中沒有另一個同一分頁大小的緩衝池。 尚未啟動最近定義的緩衝池 bufferpool-name

無法處理該陳述式。

使用者回應

停止資料庫後再重新啟動,才能啟動所需緩衝池。

sqlcode:-647

sqlstate:57003

SQL0648N 無法定義外部索引鍵,因為它會透過多個路徑, 將與 owner1.table-name1 表格關聯的 owner2.table-name2 表格刪除。 原因碼 = reason-code

解說

無法定義外部索引鍵,原因為下列其中一個原因碼 reason-code
01
此關係會透過具有相同 SET NULL 的刪除規則的多重路徑, 將要刪除的表格 owner1.table-name1 連接到表格 owner2.table-name2
02
此關係會透過具有不同刪除規則的多重路徑, 將要刪除的表格 owner1.table-name1 連接到表格 owner2.table-name2

已停止處理 SQL 陳述式。

使用者回應

請更正陳述式。 重試。

sqlcode:-648

sqlstate:42915

SQL0650N 未執行 ALTER 陳述式。原因碼:reason-code

解說

無法依指定執行索引或表格的 ALTER。

原因碼可更具體地指出問題的本質:

23

無法變更下列索引的壓縮:MDC 或 ITC 區塊索引、廣域暫存表格索引、產生的範圍叢集表格索引,以及索引規格。

30

嘗試變更延遲表格 SYSTOOLS.REPL_MQT_LATENCY。

31

嘗試將備用表格的基本表格中的直欄變更為備用表格的基本表格中不支援的資料類型。

使用者回應

更正 ALTER 陳述式,以避免原因碼指出的限制,然後重新發出陳述式。

sqlcode:-650

sqlstate:56090

SQL0658N 陳述式失敗,因為無法明確地捨棄、變更或取代名稱為 name 的物件。

解說

嘗試明確地變更或明確地捨棄 ALTER 陳述式或 DROP 陳述式不支援的物件時,即會傳回此訊息:

  • 限制不可明確地變更的物件包括宣告為 LANGUAGE SQL 的函數及有源函數。限制不可明確地捨棄的物件包括預設橫列許可權。

由於間接相依關係或其他錯誤(包括下列範例)而無法明確地變更、捨棄或取代物件時,也會傳回此訊息:

  • 捨棄物件失敗,因為物件是由系統隱含地建立。物件範例:
    • 發出 CREATE TYPE 陳述式時產生的強制轉型或比較函數
    • 為與 SQL 程序搭配使用而建立的套件
  • 指定為與表示式型索引搭配使用而建立的視圖名稱,以嘗試發出具有 OR REPLACE 子句的 CREATE VIEW 陳述式。
  • 嘗試使用 DROP THRESHOLD 陳述式,來捨棄工作動作集環境定義中定義的臨界值。
  • 嘗試變更暱稱來禁止快取,但是具體化查詢表格定義的全選查詢參照該暱稱。

使用者回應

請執行下列疑難排解步驟,以回應此錯誤:

  • 檢閱與執行時期記號 name 中指定物件相關的 ALTER 陳述式限制。對於無法使用 ALTER 陳述式明確地變更的物件,捨棄這些物件,然後使用想要的變更來重建物件。
  • 若要捨棄系統產生的物件,請捨棄導致建立系統產生物件的物件。
  • 若要捨棄工作動作集環境定義中定義的臨界值,請使用 ALTER WORK ACTION SET 陳述式或 DROP WORK ACTION SET 陳述式。
  • 若要變更暱稱以禁止快取,請從任何具體化查詢表格定義中移除暱稱的所有參照。
  • 若要捨棄表格的預設橫列許可權,請指定 DEACTIVATE ROW ACCESS CONTROL 子句以發出 ALTER TABLE 陳述式。

sqlcode:-658

sqlstate:42917

SQL0659N 已超過表格物件的大小上限。

解說

一個或多個構成表格的物件,已達到其大小上限。構成表格的儲存體物件有:
  • 資料:這是儲存基本直欄資料的地方
  • 索引:這是儲存表格上全部索引的地方
  • 長資料:這是儲存 LONG VARCHAR 和 LONG VARGRAPHIC 直欄資料的地方
  • Lob/Lob 配置:這是儲存 BLOB、CLOB 和 DBCLOB 直欄資料及控制資訊的地方
  • XML:這是儲存 XML 資料的地方。

儲存體物件一旦達到它的大小上限,即不能再繼續擴充。

使用者回應

為了使物件內的現存空間可用於儲存新資料,您可以執行下列動作:
  • 重新組織表格
  • 刪除表格中不必要的橫列
  • 終止表格中的索引
  • 更新橫列以減少資料量(為了收回未使用的儲存體,此動作之後可能需要重組)
  • 刪除不必要的 XML 文件。

sqlcode:-659

sqlstate:54032

SQL0663N 資料分割區 partition-name 的分割值數目不正確。

解說

在資料分割區的 STARTING 或 ENDING 子句中指定的資料分割區鍵值限制數錯誤。 如果資料分割區規格包含 EVERY 子句,則一定只會有一個包含數字或日期時間資料類型的表格分割鍵直欄。 如果 partition-name 的值格式為 "PARTITION=value",當錯誤發生時,將無法提供分割區名稱。 所提供的值會識別分割區清單子句中之不當分割區的開始或結束值。

使用者回應

變更 STARTING 或 ENDING 子句中所指定的值個數,以配合表格分割鍵中的直欄數目。 或是變更表格分割鍵中的直欄數目。

sqlcode: -663

sqlstate: 53038

SQL0667N 無法建立 FOREIGN KEY name, 因為在母表格的母索引鍵值中找不到表格橫列的外部索引鍵值。

解說

指示的外部索引鍵值定義失敗,因為要改變的表格中包含的橫列,至少有一橫列的外部索引鍵值與母表格中的母索引鍵值不相符。

name 是限制名稱(如果已指定)。如果未指定限制名稱, name 就是 FOREIGN KEY 子句直欄清單中指定的第一個直欄名稱後面再加三個句點。

無法處理該陳述式。未改變指定的表格。

使用者回應

請移除錯誤的表格橫列,並定義外部索引鍵值。

sqlcode:-667

sqlstate:23520

SQL0668N 表格 table-name 上不容許作業,原因碼為 reason-code

解說

對表格 table-name 的存取權限受限制。原因是依據下列原因碼 reason-code

1

可在多個實務範例中傳回原因碼 1,包括下列範例:

  • 表格處於「設定完整性擱置無存取」狀態,這表示不強制表格的完整性,且表格的內容可能無效。
  • 如果相依表格處於「設定完整性擱置無存取」狀態,但母表格或基礎表格並未處於「設定完整性擱置無存取」狀態,則母表格或基礎表格上的作業也可能會收到此錯誤。
  • 已試圖在未指定 IMMEDIATE UNCHECKED 子句的情況下,對使用者維護的具體化查詢表格發出 SET INTEGRITY 陳述式。
2

表格處於「無資料移動」狀態。當處於此狀態時,不容許導致資料移動的作業。資料移動作業包括 REDISTRIBUTE、更新資料庫分割鍵、更新多維叢集鍵、更新範圍叢集鍵、更新表格分割鍵及 REORG TABLE。

3

表格處於「載入擱置」狀態。先前在此表格上的 LOAD 嘗試導致失敗。直到重新啟動或終止 LOAD 作業之後,才容許存取表格。

4

表格處於「讀取存取」狀態。此狀態可能發生在線上 LOAD 處理程序期間(有 READ ACCESS 選項的 LOAD INSERT),或在線上 LOAD 作業之後, 並且在使用 SET INTEGRITY 陳述式在表格的新添加部分內驗證全部限制之前。 如果以 SET INTEGRITY 陳述式關閉完整性檢查時使用 READ ACCESS 子句,則也可能會發生此狀態。此表格上不容許更新活動。

5

表格處於「載入處理中」狀態。LOAD 公用程式目前正在操作此表格,直到完成 LOAD 之後才容許存取。

6

在 DB2 Enterprise Server Edition 中,無法重新整理參照暱稱的具體化查詢表格。

7

表格處於 reorg 擱置狀態。在 ALTER TABLE 陳述式包含 REORG 建議的作業之後,可能會發生這種情況。

8

表格處於變更擱置狀態。當使用相同工作單元中的表格,作為包含 REORG 建議作業的 ALTER TABLE 陳述式時,可能會發生此狀況。

9

表格處於「重新配送擱置」狀態。未在這個表格上完成 REDISTRIBUTE 公用程式,直到完成 REDISTRIBUTE 後,才容許存取。

10

表格是進行中 ADMIN_MOVE_TABLE 作業的來源表格。嘗試的作業受限,除非移動已完成或取消。

11

具有未分割索引的表格包含一個新的資料分割區,在與建立新分割區的新增或連接作業相同的交易中,作業將嘗試存取該資料分割區,但是交易並未在專用模式下鎖定表格。

使用者回應

請根據下列原因碼來回應此錯誤:

1

根據表格類型,以使命名為 table-name 的表格脫離「設定完整性擱置無存取」狀態:

  • 若為使用者維護的具體化查詢表格,請執行搭配 IMMEDIATE UNCHECKED 選項的陳述式。
  • 若為不是使用者維護的具體化查詢表格,請執行搭配 IMMEDIATE CHECKED 選項的 SET INTEGRITY 陳述式。
2

在表格 table-name 的相依立即具體化查詢表格和暫置表格上,執行 REFRESH TABLE 陳述式。 可經由先前 LOAD INSERT 作業,以從 table-name 的添加資料,以及經由具有 ATTACH 子句的先前 ALTER TABLE 陳述式,以從 table-name 的附加資料,來共同漸進維護這些相依立即具體化查詢表格及暫置表格的內容。

3

將表格移出「載入擱置」狀態。

4

如果「讀取權」狀態導因於 LOAD,則發出 LOAD QUERY 指令,以檢查表格是否正在進行載入處理。如果是的話,請在完成 LOAD 公用程式之前稍作等待,或在必要時,重新啟動或終止先前失敗的 LOAD 作業。 若目前不在 LOAD,請發出具有 IMMEDIATE CHECKED 選項的 SET INTEGRITY 陳述式,以驗證表格新載入部分的限制。

如果「讀取權」狀態導因於關閉完整性檢查,則發出搭配 IMMEDIATE CHECKED 選項的 SET INTEGRITY 陳述式。

5

在完成現行 LOAD 作業之前,請稍作等待。您可以使用 LOAD QUERY 指令來監視載入進度。

6

使用 MAINTAINED BY USER 選項來定義一個具體化查詢表格。然後, 使用包含子查詢的 INSERT 陳述式來將資料移入具體化查詢表格。

7

使用 REORG TABLE 指令重組表格。

對於處於 reorg 擱置狀態的表格,請注意在重組表組時不容許下列子句:

  • INPLACE REORG TABLE 子句
  • 當表格具有已在表格上定義的未分割索引時,分割表格的 ON DATA PARTITION 子句
8

完成工作單元,然後重新發出指令。

9

如果 REDISTRIBUTE 公用程式正在運作中,請等到它在現行表格上完成運作。您可以使用 LIST UTILITIES 指令,來監視 REDISTRIBUTE 公用程式的進度。如果先前的 REDISTRIBUTE 作業失敗,讓表格處於這種狀態,請利用 CONTINUE 或 ABORT 選項重新發出 REDISTRIBUTE 公用程式,並讓它在這個表格上完成。

10

請完成或取消表格移動作業,並重新發出指令。您可以查詢 SYSTOOLS.ADMIN_MOVE_TABLE 表格,以取得移動作業狀態的相關資訊。

11

修改應用程式,以便先確定包括新增或連接分割區作業的交易,然後再確定存取新分割區(其中目標表格包含未分割的索引)的應用程式。或者,修改應用程式,以便在與建立新分割區的新增或連接作業相同的交易中存取該分割區時,專門鎖定具有未分割的索引且受線上新增或連接作業影響的表格。

sqlcode:-668

sqlstate:57007

SQL0669N 不能明顯捨棄系統所需的索引。

解說

DROP INDEX 陳述式嘗試捨棄下列狀況所需的索引:

  • 在表格中強制限制主要索引鍵
  • 在表格中施行唯一限制
  • 強制類型表格階層結構唯一的物件 ID (OID) 直欄
  • 維護抄寫的具體化查詢表格
  • 維護表格中的 XML 直欄。
  • 維護 HBase 橫列索引鍵定義

無法使用 DROP INDEX 陳述式終止系統所需的索引。

無法處理該陳述式。未終止指定的索引。

使用者回應

若您不想保留主要索引鍵或唯一限制,請使用 ALTER TABLE 陳述式的 DROP PRIMARY KEY 子句或 DROP CONSTRAINT 子句,移除主要索引鍵或唯一限制。 如果建立此索引只是為了強制主要索引鍵或唯一鍵,系統將終止此索引。 如果不然,系統會處理 DROP INDEX 陳述式。

捨棄表格時,才能捨棄 OID 直欄索引。

維護抄寫的具體化查詢表格所需的索引,唯有在先捨棄抄寫的具體化查詢表格後才能捨棄。

無法明確捨棄表格中與一個以上的 XML 直欄相關聯之系統所需的索引。資料庫管理程式維護此類索引,以支援表格中的 XML 直欄。若不捨棄表格,就無法捨棄 DROP INDEX 陳述式中所指定的索引。

若為 HBase 使用者,只在捨棄相關聯的 HBase 表格時,才能隱含地捨棄索引。

sqlcode:-669

sqlstate:42917

SQL0670N 陳述式失敗,因為結果表格的橫列或直欄大小將超出橫列或直欄大小限制:limit。表格空間名稱:tablespace-name。結果橫列或直欄大小:calculated-size

解說

表格的橫列大小是直欄的位元組計數總和,包括所有結構化或 XML 類型直欄的行內長度。因此,橫列大小會受到直欄總數、LOB 直欄總數及直欄的資料類型影響。

橫列大小限制為給定表格的位元組數目上限。此限制由某些情況中的定義值,或取決於表格空間頁面大小的變數值組成。

在直欄組織表格中,直欄大小限制由未經壓縮之直欄資料值的大小上限組成,而此直欄資料值可以置於表格的一頁。

嘗試使用下列其中一個陳述式來建立或修改表格時,即會傳回此訊息:

  • CREATE TABLE
  • ALTER TABLE 陳述式
  • DECLARE GLOBAL TEMPORARY TABLE
  • CREATE GLOBAL TEMPORARY TABLE

延伸橫列大小的多維度叢集 (MDC) 表格的 VARCHAR、VARGRAPHIC 或 VARBINARY 維度索引鍵大於 24 個位元組時,也會傳回此訊息。

當對直欄組織基本表格所做的變更導致相關聯的用法概要表格超出大小限制時,也可能會傳回此訊息。發生此情況時,limit 記號會指示用法概要表格已超出限制。

使用者回應

若要解決此訊息所報告的問題,請執行下列步驟:

若為橫列大小限制:

  1. 計算您正在嘗試建立或修改之表格的橫列大小。
  2. 判定橫列大小超出的限制。
    • 橫列組織表格:橫列大小限制是由表格空間分頁大小所決定。
    • 直欄組織表格:限制是直欄組織表格的橫列大小上限。
  3. 請執行下列其中一個動作:
    • 減少一個以上直欄的長度、指定不同資料類型,或刪除一個以上直欄,來減少橫列大小。
    • 僅限橫列組織表格:在陳述式中指定表格空間,其分頁大小符合您所計算的橫列大小。
    • 如果減少橫列大小或發現表格空間不可以具有較大的分頁大小,請啟用延伸橫列大小配置參數 extended_row_sz,其容許橫列長度超出表格空間的分頁大小的記錄長度上限。

若為直欄大小限制:

  1. 根據直欄類型及基礎頁面大小,判定您嘗試建立或修改之表格的直欄大小上限。
  2. 減少受影響直欄的長度,讓它不超出限制。

sqlcode:-670

sqlstate:54010

SQL0672N 在表格 table-name 中不容許作業 DROP。

解說

DROP 作業失敗,可能是由於下列原因之一:

  • 正捨棄的表格有 RESTRICT ON DROP 屬性。
  • 正捨棄的表格空間或資料庫分割區群組包含指定的表格,該表格有 RESTRICT ON DROP 屬性。

無法執行 DROP 陳述式。

使用者回應

若在 DROP TABLE 陳述式期間發生問題,則使用 DROP RESTRICT ON DROP 子句發出 ALTER TABLE 陳述式。 然後重新發出 DROP TABLE 陳述式。

若在 DROP TABLESPACE 或 DROP DATABASE PARTITION GROUP 陳述式期間發生問題,請確定具有 RESTRICT ON DROP 屬性的表格空間或資料庫分割區群組中,沒有其他表格。下列 select 陳述式可以幫助識別表格:

SELECT TB.TABNAME, TB.TABSCHEMA,
              TS.TBSPACE, TS.NGNAME
       FROM SYSCAT.TABLES TB,
                 SYSCAT.TABLESPACES TS
       WHERE TYPE = 'T' AND 
             DROPRULE = 'R' AND 
             TB.TBSPACEID = TS.TBSPACEID 
       ORDER BY TS.NGNAME, TS.TBSPACE,
                      TB.TABSCHEMA, TB.TABNAME;

識別有 RESTRICT ON DROP 屬性的表格之後,對每一個有 RESTRICT ON DROP 屬性的表格使用 DROP RESTRICT ON DROP 子句發出 ALTER TABLE 陳述式。 然後重新發出 DROP TABLESPACE 或 DROP DATABASE PARTITION GROUP 陳述式。

sqlcode:-672

sqlstate:55035

SQL0673N 無法建立主要索引鍵或唯一鍵索引, 因為表格包含的橫列與識別的限制 name 主要或唯一鍵的直欄值重複。

解說

name 識別之限制的主要或唯一鍵定義失敗, 因為要改變的表格已包含橫列,這些橫列與 PRIMARY KEY 子句或 UNIQUE 子句直欄的值重複。

name 是限制名稱(如果已指定)。如果未指定限制名稱, name 就是主要索引鍵或唯一限制子句中指定的第一個直欄名稱後面再加三個句點。

無法處理該陳述式。未改變指定的表格。

使用者回應

嘗試定義主要索引鍵值或唯一鍵值前,先從表格中移除錯誤的橫列。

sqlcode:-673

sqlstate:23515

SQL0678N 文字 literal 必須與直欄 column-name 的資料類型 data-type 相容。

解說

為 STARTING、ENDING 或 EVERY 子句指定的文字 literal 與直欄 column-name 的資料類型相容。 直欄的資料類型為 data-type。 EVERY 子句中所使用的文字值不得為零或負數。 當 PARTITION BY 子句指定日期時間資料類型時,EVERY 子句就必須指定持續時間。

使用者回應

在 STARTING、ENDING 或 EVERY 子句中指定有效的文字。

sqlcode:-678

sqlstate:53045

SQL0680N 因為針對表格、視圖、表格函數或暱稱指定太多直欄,或針對使用者定義的橫列資料類型指定太多欄位,所以陳述式失敗。

解說

針對表格定義的直欄數上限,視物件類型而定。

針對視圖、表格函數或暱稱定義的直欄數上限以及使用者定義的橫列資料類型允許的欄位數上限,都是指定於 SQL 及 XML 限制中。

針對表格,直欄數上限會受到所指定 LOB 直欄數的影響。CREATE TABLE 陳述式中的「橫列大小限制」區段,包括公式以計算表格的橫列大小。

針對聯合環境中的關聯式資料庫來源,暱稱也可能受限於資料來源上表格或視圖的直欄數上限(如果這些限制小於 SQL 及d XML 限制中指定的限制)。

在下列實務範例中,會傳回此訊息:

  • 嘗試建立的物件(例如表格、視圖、表格函數或表格暱稱)的直欄數多於允許的直欄數上限。
  • 嘗試建立的使用者定義橫列資料類型的欄位數多於允許的欄位數上限。

使用者回應

請確定直欄或欄位數未超出限制。

若要解決此訊息所報告的問題,請執行下列類型的疑難排解動作:

  • 建立表格
    • 檢閱資料庫管理程式 SQL 及 XML 限制。請特別檢閱頁面大小特定的資料庫管理程式 SQL 及 XML 限制。
    • 重新設計表格,使其具有較少的直欄、使用與 LOB 不同的資料類型以減少橫列大小,或指出分頁大小容許較高直欄數的表格空間,並重新發出 CREATE TABLE 陳述式。
  • 在表格上建立視圖或表格函數
    • 檢閱資料庫管理程式限制,並重新設計表格使其符合 SQL 限制,然後重新建立視圖或表格函數。
  • 建立聯合資料來源中表格或視圖的暱稱
    • 檢閱表格或視圖的資料庫管理程式限制及資料來源 SQL 限制,並重新設計暱稱使其符合這些限制,然後重新建立它。
  • 建立橫列資料類型
    • 檢閱 SQL 及 XML 限制,並重新設計資料類型使其具有較少的欄位以滿足 SQL 限制,然後重新建立橫列資料類型。

sqlcode:-680

sqlstate:54011

SQL0683N 直欄、屬性、使用者定義類型或函數 data-item 的設定包含不相容的子句。

解說

在 CREATE 陳述式、ALTER 陳述式、XMLTABLE 表示式或參照一般表格函數之 SELECT 陳述式的類型化相關性子句的資料項目規格中發生錯誤。出現不相容的說明,諸如:"INTEGER and FOR BIT DATA"。 如果直欄的類型為 DB2SECURITYLABEL,則不相容的規格包括 NOT NULL WITH DEFAULT。 錯誤的位置由 data-item 提供如下:

  • 若為 CREATE TABLE 陳述式、ALTER TABLE 陳述式、XMLTABLE 表示式或 SELECT 陳述式的類型化相關性子句,data-item 會提供包含錯誤的直欄名稱。
  • 若為 CREATE FUNCTION 陳述式,data-item 是識別陳述式中問題區域的記號。例如,"PARAMETER 3" 或 "RETURNS" 或 "CAST FROM"。
  • 若為 CREATE DISTINCT TYPE 陳述式,data-item 會提供正在定義的類型名稱。
  • 若為 CREATE 或 ALTER TYPE 陳述式,data-item 會識別含有錯誤的子句,或提供包含錯誤的屬性名稱。
  • 若為 CREATE 或 ALTER TABLE 陳述式,BUSINESS_TIME 期間的直欄必須定義為 DATE 或 TIMESTAMP(p),其中 p 是介於 0 與 12(含)之間。
  • 若為 CREATE 或 ALTER TABLE 陳述式,ROW BEGIN、ROW END 或 TRANSACTION START ID 的 data-item 必須是 TIMESTAMP(12)。
  • 若為 ALTER TABLE 陳述式,無法對使用隨機產生方法所產生之隨機配送表的隨機配送索引鍵直欄指定搭配 COMPRESS OFF 或 COMPRESS SYSTEM DEFAULT 的 ALTER COLUMN。

無法處理該陳述式。

使用者回應

請移除不相容性,然後再試陳述式一次。

sqlcode:-683

sqlstate:42842

SQL0695N 提供的值 (seclabel) 無法轉換為安全標籤。在原則 ID 為 policy-id 的安全原則中,元素值 element-value 並未對應於元件(位於序數位置 ordinal)中的任何元素。

解說

INSERT 或 UPDATE 陳述式為 DB2SECURITYLABEL 類型的直欄指定值。基於保護表格的安全原則,此值無法轉換為有效的安全標籤。如果 seclabel 值是 *N,則實際的值已寫入 db2diag 日誌檔中。

此值在元件號碼指出的元件中發生問題。序數位置代表元件在 CREATE SECURITY POLICY 陳述式(用來建立原則)之 COMPONENTS 子句中的位置。指出的元素值並未對應於該元件中的有效元素。

使用者回應

請檢查 INSERT 或 UPDATE 陳述式,並確定安全標籤直欄中所設定的值,對於保護表格的安全原則而言有效。有時,從未使用與目標表格相同之安全原則所保護的表格中執行 SELECT,會導致所產生的值無效。您應該僅複製受相同安全原則保護之表格間的安全標籤。

若要取得給定原則 ID 的安全原則名稱,請使用此 SQL 查詢。請使用錯誤訊息中給定的原則 ID 號碼置換原則 ID。

SELECT SECPOLICYNAME
                   FROM  SYSCAT.SECURITYPOLICIES
                    WHERE SECPOLICYID = policy-id

sqlcode:-695

sqlstate:23523

SQL0696N 觸發程式 trigger-name 的定義包括無效使用的相關名稱或轉移表格名稱 name。原因碼 =reason-code

解說

觸發程式包括無效使用的 namereason-code 的值可識別問題:

1

如果未使用複合 SQL(已編譯)陳述式定義 DELETE 觸發程式,則無法在 DELETE 觸發程式中使用 NEW 相關名稱及 NEW TABLE 名稱。

2

如果未使用複合 SQL(已編譯)陳述式定義 INSERT 觸發程式,則無法在 INSERT 觸發程式中使用 OLD 相關名稱及 OLD TABLE 名稱。

3

BEFORE 觸發程式中不允許使用 OLD TABLE 名稱及 NEW TABLE 名稱。

4

如果使用複合 SQL(已編譯)陳述式定義觸發程式,則無法在觸發程式中使用 OLD TABLE 名稱及 NEW TABLE 名稱。

無法處理該陳述式。

使用者回應

將無效的相關名稱或轉移表格名稱連同前導關鍵字一起移除。

SQL0697N 定義中包含 FOR EACH STATEMENT 子句的觸發程式中,不允許 OLD 或 NEW 相關名稱。

解說

觸發程式依其定義,包括指定了 OLD 或 NEW 相關名稱(或兩者)的 REFERENCING 子句,以及 FOR EACH STATEMENT 子句。不能同時指定這些。

無法處理該陳述式。

使用者回應

從 REFERENCING 子句移除任何 OLD 或 NEW 相關名稱,或用 FOR EACH ROW 置換 FOR EACH STATEMENT。

sqlcode:-697

sqlstate:42899

SQL0707N 無法使用該名稱 name,因為指定的 ID 保留給系統使用。

解說

下列清單提供保留名稱及限定元的相關規則:

  • 表格空間名稱不能以 SYS 開頭。
  • 儲存體群組名稱不能以 SYS 開頭。
  • 資料庫分割區群組名稱不能以 SYS 或 IBM 開頭。
  • 模組名稱不能以 SYS 開頭。
  • 模組中所定義物件的物件名稱不能以 SYS_ 開頭,但模組起始設定程序不在此限。
  • 儲存點名稱不能以 SYS 開頭。
  • 角色名稱不能以 SYS 開頭,且不能是 ACCESSCTRL、DATAACCESS、DBADM、NONE、NULL、PUBLIC、SECADM、SQLADM 或 WLMADM。
  • 工作量管理物件名稱不能以 SYS 開頭。
  • 成員子集名稱不能以 SYS 為開頭。

使用者回應

選取一個非保留的名稱。

sqlcode:-707

sqlstate:42939

SQL0713N special-register 的置換值無效。

解說

SET 陳述式中指定的值不是所指出之特別暫存器的有效值,指定的值對特別暫存器有效,但無法在現行伺服器上使用,或指定的值由於指示器變數而為 NULL。

無法執行陳述式。

使用者回應

更正取代值或任何指示器變數。

sqlcode:-713

sqlstate:42815

SQL0719N 連結使用者 auth-id 錯誤。套件 package-name 已存在。

解說

嘗試使用 PRECOMPILE 或 BIND 的 ACTION ADD 選項,以新增已存在的套件。在 SYSCAT.PACKAGES 型錄視圖中,'pkgschema.pgkname.pkgversion' 的組合必須是唯一的。
auth-id
BIND 或 PREP 的呼叫程式的授權 ID
package-name
使用 'pkgschema.pkgname.pkgversion' 格式的套件名稱。若套件版本為空字串,則將 '.pkgversion' 從名稱中省略。

未建立套件。

使用者回應

確定不會嘗試新增重複項目的可能方式包括:
  • 檢查現存應用程式套件名稱的 SYSCAT.PACKAGES 型錄視圖。用未在使用中的 'pkgschema.pkgname.pkgversion' 重新呼叫 PRECOMPILE 或 BIND。
  • 重新發出 PREP 或 BIND 陳述式,而不指定 ACTION ADD 選項。這將置換現存的套件。

sqlcode:-719

sqlstate:42710

SQL0720N 正在嘗試將套件 pkgschema.pkgname 取代成版本pkgversion,但這個版本已存在。

解說

嘗試使用 ACTION REPLACE REPLVER 選項,建立已存在的套件的版本。REPLVER 關鍵字中指定的版本,與 VERSION 前置編譯選項中指定的版本不同。在 VERSION 前置編譯選項中指定的版本已存在於型錄中。 在 SYSCAT.PACKAGES 型錄視圖中,'pkgschema.pkgname.version' 的組合必須是唯一的。

常見的錯誤是,使用者可能認為,正在建立的版本是在 REPLVER 關鍵字中指定的項目。情況並不是這樣。REPLVER 關鍵字中指定的版本,是正被置換的版本名稱。要建立的版本是在 VERSION 選項中提供給程式的版本。

未建立任何套件。

使用者回應

請確定正在建立的版本確實不存在。

有兩種方法可以解決此問題:
  • 使用新版本名稱重新前置編譯該程式,並重新發出原始的 PREP 或 BIND 指令。
  • 其他方法是重新發出 PREP 或 BIND 指令,指定未指定 REPLVER 的 ACTION REPLACE 子句。在此情況下,REPLACE 將置換與 VERSION 選項中指定的版本相符合的版本。

sqlcode:-720

sqlstate:42710

SQL0721N 由於不是唯一的,所以無法建立帶有一致性記號 = 0Xcontoken 的套件 pkgschema.pkgname

解說

嘗試使用對於該套件不唯一的一致性記號,來新增或置換套件。'pkgschema.pkgname.contoken' 組合已存在。這很可能是由於使用 PRECOMPILE 的 LEVEL 選項,指定一致性記號而導致的。

未建立套件。

使用者回應

檢查帶有指示的一致性記號之現存應用程式套件名稱的 SYSCAT.PACKAGES 型錄表格。重新發出 PREP 或 BIND 指令,以使 'pkgschema.pkgname.contoken' 在型錄中是唯一的。 下列 SQL 陳述式可用於查詢型錄:
SELECT PKGSCHEMA,PKGNAME
FROM SYSCAT.PACKAGES
WHERE HEX(UNIQUE_ID) = 'contoken';

若已使用了前置編譯上的 LEVEL 選項,則重新發出前置編譯並指定不同的 LEVEL 值,會變更一致性記號。建議不要使用 LEVEL 選項;不指定前置編譯的 LEVEL 選項,將確保一致性記號為現行的時間戳記值。

SQL0722N 執行使用者 auth-idbind-command 時發生錯誤。套件 package-name 不存在。

解說

針對不存在的套件發出連結或重新連結。若已指定 ACTION REPLACE,且 REPLVER 選項指定了一個不存在的版本,則將發生錯誤。
bind-command
已發出連結指令類型 (BIND | REBIND)。請注意:值 'BIND' 也將用於前置編譯。
auth-id
發出連結或重新連結的授權 ID。
package-name
使用 'pkgschema.pkgname.pkgversion' 格式的套件名稱。若套件版本為空字串,則將 '.pkgversion' 從名稱中省略。

未連結或重新連結套件。

解說

檢閱 SYSCAT.PACKAGES 型錄視圖,以取得正確的 'pkgschema.pkgname.pkgversion' 來在 REPLVER 選項中指定。

sqlcode:-722

sqlstate:42704

SQL0723N 觸發程式 trigger-name 中的觸發 SQL 陳述式發生錯誤。針對該錯誤所傳回的資訊包括 SQLCODE sqlcode、SQLSTATE sqlstate 及訊息記號 token-list

解說

觸發程式 trigger-name 中的 SQL 陳述式在執行觸發程式時失敗。已提供 sqlcode、sqlstate 和訊息記號清單(每一記號以垂直長條字元分隔)。 訊息記號可能已被截斷。請參閱 sqlcode 的對應訊息,以獲得錯誤的進一步解釋。

觸發程式和造成觸發程式執行的原始 SQL 陳述式都無法處理。

使用者回應

檢查與失敗的 SQL 陳述式的 SQLCODE 關聯的訊息。遵循訊息建議的動作。

sqlcode:-723

sqlstate:09000

SQL0724N 啟動類型為 object-typeobject-name,將超出間接 SQL 串連的最大層次。

解說

當一個觸發程式啟動另一個觸發程式(可能透過參照的限制刪除規則)或一個包括 SQL 的常式呼叫另一個常式時,發生間接 SQL 階式排列。這個階式排列的深度限制在 16(若為觸發程式)及 64(若為常式)。

請注意,遞迴狀況中,觸發程式包括一個觸發的 SQL 陳述式,它會直接或間接造成同一觸發程式啟動,或一個常式直接或間接地呼叫自己, 這是一種階式排列的形式,如果沒有防止階式排列超過限制的條件,它極有可能造成此種錯誤。

object-type 是 TRIGGER、FUNCTION、METHOD,或 PROCEDURE 其中一個。

指定的 object-name 是可能會在階式排列第十七層啟動的物件之一。

使用者回應

從由接收此錯誤的陳述式啟動或呼叫的物件開始。如果這些物件中有任一個是遞迴的,請確定有某種條件可防止此物件啟動或呼叫超過限制允許的層次。 如果這不是問題的原因,請追蹤啟動或呼叫的物件鏈接,以判斷超過階式排列限制的鏈接。

sqlcode:-724

sqlstate:54038

SQL0727N 執行隱含式的系統動作類型 action-type 時,發生錯誤。針對該錯誤所傳回的資訊包括 SQLCODE sqlcode、SQLSTATE sqlstate 及訊息記號 token-list

解說

處理陳述式或指令,導致資料庫管理程式隱含執行附加處理。處理時,發生錯誤。 所嘗試的動作顯示在 action-type

1

隱含式地重新連結套件

2

隱含式的準備快取之動態 SQL 陳述式

3

隱含的物件重新驗證

4

這個回覆碼保留給 DB2 使用。

5

套件連結期間,未連結靜態 SQL 陳述式的漸進式連結

6

隱含準備可重新最佳化的陳述式,其中包含主變數、特別暫存器或參數記號

7

觸發程式的隱含重新產生

8

函數的隱含重新產生

9

核對限制的隱含重新產生

10

廣域變數的隱含實例化

11

模組起始設定常式的隱含呼叫

12

在變更直欄資料類型之後,資料是否符合完整性限制的隱含驗證

13

在變更直欄資料類型之後,現有的產生表示式直欄值是否等於產生表示式的隱含驗證

已提供 sqlcode、sqlstate 和訊息記號清單(每一記號以垂直長條字元分隔)。 訊息記號可能已被截斷。請參閱 sqlcode 的對應訊息,以獲得錯誤的進一步解釋。

造成 action-type 的原始 SQL 陳述式或指令無法處理,隱含系統動作失敗。

聯合系統使用者:您可能已接收過這則訊息,因為您在透通階段作業中動態準備 SQL 陳述式, 然後又嘗試在階段作業結束後執行這個陳述式。

使用者回應

檢查與失敗的 SQL 陳述式的 SQLCODE 關聯的訊息。遵循訊息建議的動作。

無效的套件可使用 REBIND 指令來重新建立錯誤,或在解決錯誤後明示驗證套件。

若為在重新驗證資料庫物件時發生的失敗:

  1. 在管理通知日誌中尋找重新驗證失敗訊息,來判斷無法重新驗證的資料庫物件名稱。
  2. 若要避免未來發生此錯誤,您可以執行下列其中一項:
    • 如果不再需要導致此錯誤的資料庫物件,請捨棄該資料庫物件。
    • 如果可以變更導致重新驗證此資料庫物件的陳述式或指令,請變更陳述式或指令,以便下次執行該陳述式或執行該指令時,不會重新驗證該資料庫物件。
    • 請執行下列其中一項,來立即重新驗證資料庫物件:
      • 執行直接參照資料庫物件的 SQL 陳述式。
      • 呼叫資料庫物件的 ADMIN_REVALIDATE_DB_OBJECTS 程序。

聯合系統使用者:如果失敗的陳述式是在透通階段作業中動態準備, 那麼請開啟另一個透通階段作業,再次撰寫及準備陳述式,然後在階段作業仍開啟時執行這個陳述式。

sqlcode:-727

sqlstate:56098

SQL0740N 常式 routine-name (特定名稱 specific-name) 是以 MODIFIES SQL DATA 選項定義的,這在呼叫常式的環境定義中無效。

解說

常式 routine-name (特定名稱 specific-name) 是用 MODIFIES SQL DATA 定義的,因此在下列項目中不容許:

  • 未使用複合 SQL(已編譯)陳述式定義的 BEFORE 觸發程式
  • 相關子查詢
  • 搜尋條件 (例如 WHERE 子句或核對限制)

模組函數及使用複合 SQL(已編譯)陳述式定義為函數本體的函數(使用 MODIFIES SQL DATA 選項來定義),只可以是複合 SQL(已編譯)陳述式中指派陳述式右側的唯一表示式。

使用者回應

請確定常式解析確實有解析成所要的常式。從失敗的陳述式中移除常式,或用非 MODIFIES SQL DATA 的 SQL 存取指示器來重新定義常式。

sqlcode:-740

sqlstate:51034

SQL0746N 名為 routine-name(特定名稱 specific-name)的常式失敗,因為常式嘗試在名為 table-name 的表格上執行作業 operation 時,違反巢狀 SQL 陳述式規則。

解說

當應用程式呼叫的常式嘗試存取表格所使用的方式,與應用程式或從該應用程式直接或間接呼叫的常式對表格的其他用途發生衝突時,即會傳回此訊息。

記號 operation 的值指出衝突的本質:

  • 如果作業是 "READ",則應用程式或另一個常式目前正在寫入表格 table-name
  • 如果作業是 "MODIFY",則表示應用程式或另一個常式正在寫入表格 table-name,或正在從應用程式或另一個常式讀取該表格。。

在多個情境中,會傳回此訊息:

  • 如果 table-name 參照解譯表格,且接收此錯誤訊息的陳述式是 PREPARE 陳述式或 EXECUTE IMMEDIATE 陳述式, 則將解譯資訊插入解譯表格時,發生了衝突。
  • 當觸發程式嘗試呼叫儲存程序,以存取先前已在最外層呼叫陳述式的環境定義內修改的表格時,會傳回此訊息。您可以使用 DB2_RESOLVE_CALL_CONFLICT 登錄變數,強制在符合觸發程式的「SQL 標準」規則的情況下,完成對表格的所有修改,然後再執行 CALL 陳述式。

使用者回應

重試作業。

如果作業持續失敗,並且出現此錯誤,則採取下列步驟以避免發生此錯誤:

  • 重新設計應用程式或常式以避免衝突。
  • 如果在插入動態陳述式的解譯資訊時發生衝突,則透過使用 CURRENT EXPLAIN MODE 特別暫存器來停用動態陳述式的解譯,然後重新執行 PREPARE 陳述式或 EXECUTE IMMEDIATE 陳述式。
  • 如果在觸發程式嘗試呼叫儲存程序,以存取先前已在最外層呼叫陳述式的環境定義內修改的表格時,傳回此訊息,則將 DB2_RESOLVE_CALL_CONFLICT 登錄變數設為 YES。

sqlcode:-746

sqlstate:57053