SQL20000 - SQL20249

SQL20005N 陳述式失敗,因為已超出物件類型的內部 ID 數目上限。內部 ID 限制為:limit。物件類型:object-type

解說

建立、宣告或變更數種資料庫物件類型的其中一種類型時,會建立內部 ID 來唯一識別該物件。可建立的唯一 ID 數目有其上限。

已超出此物件類型的內部 ID 限制時,即會傳回此訊息。

使用者回應

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

  • 請捨棄不再使用的類型 object-type 的物件。
  • 如果 object-type 為 DECLARE TYPE,請對任何不使用的類型,移除現行複合 SQL(已編譯)陳述式內的類型宣告。
  • 如果 object-type 是工作量管理物件,您可以執行下列步驟來重設內部 ID 編號:
    1. 取出 DDL 陳述式,而 DDL 陳述式將使用 db2look 公用程式(指定 -wlm 選項)重新產生工作量管理物件。
    2. 捨棄資料庫中所指定類型的所有工作量管理物件。
    3. 使用 db2look 公用程式產生的檔案中的資訊,來重建所指定類型的工作量管理物件。

sqlcode:-20005

sqlstate:54035

SQL20010N 當結構化類型的實例為 NULL 時,不容許使用轉換方法 method-ID

解說

方法 method-ID 是以結構化類型的空值實例來指定的轉換方法。空值實例 不能處理轉換方法。有時,方法名稱無效。

無法處理該陳述式。

使用者回應

決定與轉換方法搭配使用的空值實例。使用建構子函數建立一個結構化類型的非空值實例後, 實例才能使用任何的轉換方法。

若要找出與 method-ID 相關的方法名稱,請使用下列查詢:
SELECT FUNCSHEMA, FUNCNAME,
              SPECIFICNAME
       FROM SYSCAT.FUNCTIONS
     WHERE
      FUNCID = INTEGER(
            method-ID
            )

sqlcode:-20010

sqlstate:2202D

SQL20011N 轉換群組 group-name 已定義給資料類型 type-name 的次類型或超類型。

解說

對於與 type-name 位於相同階層結構的一個類型, 已有名為 group-name 的轉換群組存在。它可能 定義給 type-name 的超類型或次類型。在結構化類型 階層結構中,轉換群組名稱只能使用一次。

無法處理該陳述式。

使用者回應

請變更轉換群組的名稱。

sqlcode:-20011

sqlstate:42739

SQL20012N 類型 type-name 並沒有相關的轉換群組要捨棄。

解說

type-name 並未定義任何轉換。沒有轉換可捨棄。

陳述式並未捨棄任何轉換群組。

使用者回應

請確定 SQL 陳述式中已正確指定類型 (including any required qualifiers) 的名稱,並且該類型確實存在。

sqlcode:-20012

sqlstate:42740

SQL20013N 物件 super-object-name 不是物件 sub-object-name 的有效超類型、超表格或超視圖。

解說

如果造成錯誤的陳述式正在建立類型, super-object-name 類型不可以是 sub-object-name 的超類別, 因為它不是使用者定義的結構化類型。

如果造成錯誤的陳述式正在建立表格, super-object-name 表格不可為 sub-object-name 表格的超表格, 因為其並未定義成一個結構化類型的表格,或者表格 super-object-name 的類型不是定義表格 sub-object-name 時,所直接使用的超類型。

如果造成錯誤的陳述式正在建立視圖, super-object-name 視圖不可為 sub-object-name 視圖的超視圖, 因為其並未定義成一個結構化類型的視圖,或者視圖 super-object-name 的類型不是定義視圖 sub-object-name 時,所直接使用的超類型。

無法處理該陳述式。

使用者回應

在 CREATE 陳述式的 UNDER 子句中指定有效的類型、表格或視圖。

sqlcode:-20013

sqlstate:428DB

SQL20014N 類型 type-name 的轉換群組 group-name transform-type 轉換函數無效。原因碼 = reason-code

解說

轉換群組 group-name 中的 transform-type 轉換函數無效。 原因需視 reason-code 而定,如下所示。
1
FROM SQL 轉換函數只能有一個參數。
2
FROM SQL 轉換函數的參數類型必須為 type-name
3
TO SQL 轉換函數的 RETURNS 資料類型必須屬於類型 type-name
4
傳回純量的 FROM SQL 轉換函數的 RETURNS 類型,必須是 DECIMAL 以外的內建資料類型。
5
所有傳回純量的 FROM SQL 轉換函數的 RETURNS 類型,都必須是 DECIMAL 以外的內建資料類型。
6
TO SQL 轉換函數至少必須有一個參數。
7
TO SQL 轉換函數的參數類型都必須是 DECIMAL 以外的內建資料類型。
8
TO SQL 轉換函數必須是純量函數。
9
FROM SQL 轉換函數必須是以 LANGUAGE SQL 所撰寫,或者它必須使用以 LANGUAGE SQL 撰寫的另一個 FROM SQL 轉換函數。
10
TO SQL 轉換函數必須是以 LANGUAGE SQL 所撰寫,或者必須使用以 LANGUAGE SQL 撰寫的 TO SQL 轉換函數。

無法處理該陳述式。

使用者回應

1
請以只有一個參數的標記來指定 FROM SQL 轉換函數。
2
請指定參數類型與 type-name 相同的 FROM SQL 轉換函數。
3
請指定 RETURNS 類型與 type-name 相同的 TO SQL 轉換函數。
4
請指定所包含的 RETURNS 類型為 DECIMAL 以外之內建資料類型的 FROM SQL 轉換函數。
5
請指定一個 FROM SQL 轉換函數,其中橫列的每個元素都擁有 DECIMAL 以外之內建資料類型的 RETURNS 類型。
6
請以至少含有一個參數的標記來指定 TO SQL 轉換函數。
7
請指定所有參數類型皆為 DECIMAL 以外之內建資料類型的 TO SQL 轉換函數。
8
請指定是純量函數的 TO SQL 轉換函數。
9
請指定以 LANGUAGE SQL 所撰寫的 FROM SQL 轉換函數,或指定使用以 LANGUAGE SQL 撰寫之另一個 FROM SQL 轉換函數的 FROM SQL 轉換函數。
10
請指定以 LANGUAGE SQL 所撰寫的 TO SQL 轉換函數,或指定使用以 LANGUAGE SQL 撰寫之 TO SQL 轉換函數的 TO SQL 轉換函數。

sqlcode:-20014

sqlstate:428DC

SQL20015N 資料類型 type-name 未定義轉換群組 group-name

解說

資料類型 type-name 未定義指定的轉換群組 group-name。 資料類型 type-name 可能已在陳述式中明確指定,或可能隱含在需有該資料類型轉換群組存在的結構化類型的使用上。

如果 group-name 是空白的,則是因為 TRANSFORM GROUP 連結選項或 CURRENT DEFAULT TRANSFORM GROUP 特別暫存器未指定,所以沒有 type-name 的轉換。

無法處理該陳述式。

使用者回應

請使用 CREATE TRANSFORM 陳述式來定義資料類型 type-name 的 轉換群組 transform-type。 如果在捨棄轉換時有錯誤發生,不需要做任何動作,因為該資料類型沒有轉換群組存在。

如果 group-name 是空白的,請在 CURRENT DEFAULT TRANSFORM GROUP特別暫存器中指定 TRANSFORM GROUP 連結選項。

sqlcode:-20015

sqlstate:42741

SQL20016N 與類型或直欄 type-or-column-name 有關的行內長度值太小。

解說

結構化類型 type-or-column-name 之定義所指定的 INLINE LENGTH 值, 小於該類型的建構子函數 (32 + 10 * number_of_attributes) 所傳回的大小, 並且小於 292。直欄 type-or-column-name 的變更所指定的 INLINE LENGTH 小於現行的行內長度。

無法處理該陳述式。

使用者回應

指定夠大的 INLINE LENGTH 值。就結構化類型而言,請指定至少等於該類型之建構子函數傳回的大小、或至少為 292。 就直欄而言,此值必須大於現行的行內長度。 如果在變更類型(或此類型的某個超類型)以新增屬性時發生這個錯誤, 則是因為無法新增屬性,或是因為該類型必須以較大的 INLINE LENGTH 值來捨棄或重建。

sqlcode:-20016

sqlstate:429B2

SQL20017N 此次類型的新增超出類型階層結構的最大層次數。

解說

類型階層結構的最大層次值是 99。新增這個類型,會超出最大值。

無法處理該陳述式。

使用者回應

不要在類型階層結構中新增次類型。

sqlcode:-20017

sqlstate:54045

SQL20018N 橫列函數 function-name 至少必須要傳回一個橫列。

解說

函數定義成至少傳回一個單一橫列。函數處理後的結果,超過一個橫列。

使用者回應

定義函數時,讓它至少傳回一個橫列。

sqlcode:-20018

sqlstate:21505

SQL20019N 函數本體傳回的結果類型,無法指定給 RETURNS 子句定義的資料類型。

解說

函數本體傳回的每一個直欄的資料類型,必須可以指定給 RETURNS 子句指定的對應直欄。

如果是純量函數,只有一個直欄。

使用者回應

變更函數本體傳回的類型或 RETURNS 類型,讓它能夠存取對應直欄的資料類型。

sqlcode:-20019

sqlstate:42866

SQL20020N 就結構化類型的表格而言,作業 operation-type 是無效的。

解說

operation-type 所識別的作業無法在類型化表格上執行。

無法處理該陳述式。

使用者回應

如果它是 ALTER 陳述式,請移除 ADD COLUMN 子句、ADD PERIOD 子句或 SET DATATYPE 子句。新增直欄時,必須使用結構化類型(把新直欄當做屬性)重新定義表格。 同樣的,變更直欄資料類型時,必須使用類型(把不同的資料類型當做直欄)重新定義表格。

如果它是 CREATE TABLE 陳述式,請移除 DISTRIBUTE BY RANDOM 子句。不容許建立類型化表格作為隨機配送表。

sqlcode:-20020

sqlstate:428DH

SQL20021N 不能變更或捨去繼承的直欄或屬性 name

解說

name 值可以識別一個直欄名稱或屬性名稱(取決於陳述式環境定義)是否繼承自表格、 視圖或類型階層結構上方的結構化類型、結構化類型的表格或結構化類型視圖。
  • CREATE TABLE 陳述式的直欄 name 不能指定 WITH OPTIONS 子句, 因為它繼承自表格階層結構中的超表格。
  • ALTER TABLE 陳述式的直欄 name 不能指定 SET SCOPE 子句或 COMPRESS 子句, 因為它繼承自表格階層結構中的超表格。
  • CREATE VIEW 陳述式的直欄 name 不能指定 WITH OPTIONS 子句, 因為它繼承自視圖階層結構中的超視圖。
  • ALTER TYPE 陳述式的屬性 name 不能指定 DROP ATTRIBUTE 子句, 因為它繼承自類型階層結構中的超類型。

無法處理該陳述式。

使用者回應

您只能在介紹直欄的結構化類型視圖或表格階層結構中的視圖或表格內, 設定或變更直欄選項。您只能在介紹屬性的類型階層結構中的資料類型內,捨棄屬性。

sqlcode:-20021

sqlstate:428DJ

SQL20022N 已定義參照直欄 column-name 的範圍。

解說

已定義參照直欄 column-name 的範圍,無法再新增。

無法處理該陳述式。

使用者回應

移除 ALTER TABLE 陳述式中的 ADD SCOPE 子句。

sqlcode:-20022

sqlstate:428DK

SQL20023N 外部參數 parm-number 或原始函數的參數已定義一個範圍。

解說

參照類型參數與外部或來源使用者定義函數一起使用時,不應該定義範圍。

無法處理該陳述式。

使用者回應

移除參數定義中的 SCOPE 規格。

sqlcode:-20023

sqlstate:428DL

SQL20024N 未利用結構化類型 type-name 定義範圍表格或視圖 target-name

解說

範圍表格或視圖 target-name 不能當作參照範圍,因為它:
  • 不是結構化類型的表格,或
  • 不是結構化類型視圖,或
  • 表格或視圖類型不同於 REF 類型的目標類型。

無法處理該陳述式。

使用者回應

指定參照範圍時使用的結構化類型的表格或結構化類型視圖的類型,必須等於 REF 類型的目標類型。

sqlcode:-20024

sqlstate:428DM

SQL20025N SCOPE 未在外部函數的 RETURNS 子句中指定,或已在來源函數的 RETURNS 子句中指定。

解說

有兩種可能的原因:
  • 把參照類型當做使用者定義外部函數的結果時,必須定義範圍。
  • 把參照類型當做使用者定義來源函數的結果時,不能定義範圍。 函數使用來源函數的範圍。

無法處理該陳述式。

使用者回應

定義外部函數時如果把參照類型當做傳回類型,就必須指定 SCOPE 子句。定義 SOURCED 函數時如果把參照類型當做傳回類型,就不能指定 SCOPE 子句。

sqlcode:-20025

sqlstate:428DN

SQL20026N 類型 type-name 並不是結構化類型,或不是 instantiable 結構化類型。

解說

陳述式需要可被 instantiated 的結構化類型。 type-name 類型是:
  • 非結構化類型;或是
  • 定義為非 instantiable 的結構化類型。

無法處理該陳述式。

使用者回應

請驗證陳述式中使用的是正確的類型名稱。

sqlcode:-20026

sqlstate:428DP

SQL20027N 已經有類型為 type-name 的子表格或子視圖 object-name,所以未建立子表格或子視圖 sub-object-name

解說

結構化類型的表格或視圖階層結構的特殊子類型,只能有一個子表格或子視圖。 已經定義了類型 type-name 的表格或視圖,所以無法建立表格或視圖 sub-object-name。 已存在的表格或視圖為 object-name

無法處理該陳述式。

使用者回應

請驗證您的確是以正確的類型建立子表格或子視圖,而且是以正確的超表格建立子表格,是以正確的超視圖建立子視圖。

sqlcode:-20027

sqlstate:42742

SQL20028N 表格或視圖 table-name 的綱目名稱, 必須與同一階層結構中的其他表格或視圖相同。

解說

結構化類型的表格階層結構中所有表格的綱目名稱必須相同,結構化類型視圖階層結構中所有視圖的綱目名稱必須相同。

無法處理該陳述式。

使用者回應

請驗證表格或視圖的綱目名稱是否正確。 若已指定階層結構名稱,請驗證其綱目名稱符合根表格或根視圖的綱目名稱。 若已建立子表格,請驗證該子表格是建立在正確的超表格之下。 如果已建立子視圖,請驗證該子視圖是建立在正確的超視圖之下。

sqlcode:-20028

sqlstate:428DQ

SQL20029N operation 不可套用至子表格或子視圖。

解說

作業 operation 已套用至表格或視圖,但並非表格階層結構或視圖階層結構的根表格或根視圖。

子表格或子視圖不能是隨機配送表。

無法處理該陳述式。

使用者回應

在作業中指定表格階層結構的根表格或視圖階層結構的根視圖。

如果作業為 DISTRIBUTE BY RANDOM,請在沒有 DISTRIBUTE BY RANDOM 子句的情況下重新執行 CREATE TABLE 陳述式。

sqlcode:-20029

sqlstate:428DR

SQL20030N 當類型化表格、類型化視圖或索引擴充 object-name 與結構化類型 type-name 相依時,無法新增或捨棄這個結構化類型的屬性。

解說

如果目前有結構化類型的類型化表格、類型化視圖、或其任何次類型存在, 則無法新增或捨棄該結構化類型的屬性。 當直接或間接使用 type-name 的表格中有直欄存在時, 也無法新增或捨棄結構化類型的屬性。另外,當索引擴充中使用類型 type-name 或其次類型時,也無法新增或捨棄結構化類型的屬性。表格、視圖或索引擴充 object-name 與結構化類型 type-name 相依。可能還有其他表格、視圖或索引擴充 相依於這個類型或其適當之次類型。

無法處理該陳述式。

使用者回應

請驗證您變更的是正確的類型,或捨棄與結構化類型 type-name 相依的所有表格、視圖及索引擴充。

sqlcode:-20030

sqlstate:55043

SQL20031N 子表格不能定義 Object

解說

結構化類型的表格階層結構的根表格,才能定義主要索引鍵和唯一限制。 同樣的,結構化類型的表格階層結構的根表格,才能定義唯一索引。

無法處理該陳述式。

使用者回應

結構化類型的表格階層結構的根表格,才能定義唯一索引、主要索引鍵或唯一限制。

sqlcode:-20031

sqlstate:429B3

SQL20032N 子表格 table-name 不能定義您指定的直欄索引。

解說

指定給索引的直欄皆說明於比子表格 table-name 層次高的結構化類型的表格中。因此,不能在這個子表格中建立索引。

無法處理該陳述式。

使用者回應

找出表格階層結構中第一次包含所有直欄的表格。建立索引時,請以它做為表格名稱。

sqlcode:-20032

sqlstate:428DS

SQL20033N 表示式中有 partial-expression,但缺少有效的範圍參照。

解說

表示式若有 partial-expression,就需要一個已經定義範圍的運算元來當做參照類型。表示式若有 DEREF 函數,函數引數必須是一個已經定義範圍的參照類型。

回復運算子 (->) 的左運算元,必須是一個已經定義範圍的參照類型。

無法處理該陳述式。

使用者回應

請更正 SQL 陳述式語法,使運算元或引數是一個已經定義範圍的參照類型。

sqlcode:-20033

sqlstate:428DT

SQL20034N 資料類型 list-type-name 不包含在結構化資料類型階層結構中,該結構化資料類型階層結構中包含 TYPE 述詞左運算元的資料類型 left-type-name

解說

TYPE 述詞中列出的所有資料類型必須包含在資料類型階層結構中, 這種資料類型階層結構中包含的是 TYPE 述詞左運算元的資料類型。 資料類型 left-type-name 不是結構資料類型(不屬於任何類型階層結構),或資料類型 list-type-name 不包含在資料類型階層結構(包含 左類型名稱)。

無法處理該陳述式。

使用者回應

請確定表示式的資料類型和 TYPE 述詞中列出的所有資料類型, 都是同一資料類型階層結構中的結構資料類型。 如果 left-type-name 是 SYSIBM.REFERENCE,請使用 DEREF 讓表示式的結果資料類型成為結構資料類型。

sqlcode:-20034

sqlstate:428DU

SQL20035N 反向參照運算子的左運算元無效。 路徑表示式從 expression-string 開始。

解說

路徑表示式中回復運算子的左運算元無效。可能的原因包括:
  • 左運算元的直欄函數,使用直欄函數當做引數。
  • 左運算元表示式中的直欄函數和直欄參照,不在 GROUP BY 子句中。

使用者回應

更正以 expression-string 開頭之路徑表示式的回復運算子的左運算元。

sqlcode:-20035

sqlstate:428DV

SQL20036N 物件 ID 直欄 column-name 不能用回復運算子來參照。

解說

column-name 把回復運算子當做是右運算元。這個直欄是回復目標表格的物件 ID 直欄,不適用於此運算子。

無法處理該陳述式。

使用者回應

更正回復作業中的直欄名稱。

sqlcode:-20036

sqlstate:428DW

SQL20037N 必須要有物件 ID 直欄,才能建立結構化類型的表格或視圖階層結構的根表格或根視圖 object-name

解說

建立結構化類型的表格階層結構的根表格時, CREATE TABLE 陳述式必須使用 REF IS 子句來定義物件 ID (OID) 直欄。

建立結構化類型視圖階層結構的根視圖時,CREATE VIEW 陳述式必須使用 REF IS 子句來定義物件 ID (OID) 直欄。

無法處理該陳述式。

使用者回應

把所需 OID 直欄(REF IS 子句)新增到 CREATE TABLE 或 CREATE VIEW 陳述式中。

sqlcode:-20037

sqlstate:428DX

SQL20038N 無法處理陳述式,因為陳述式包含下列不相容子句或元素:keywords1keywords2

解說

陳述式中的 keywords2 子句不能與 keywords1 子句一起指定。如果 CODEUNITS32 是其中一個不相容的元素,請注意,可能已使用 string_units 配置參數隱含地設定字串單位。

使用者回應

  1. 從陳述式中移除 keywords1keywords2 子句。
  2. 如果 CODEUNITS32 是其中一個不相容的元素,請明確地指定 OCTETS 作為資料類型的字串單位。

sqlcode:-20038

sqlstate:42613

SQL20039N 索引 index-name 的定義與索引擴充 index-ext-name 的定義不相符。

解說

索引定義和索引擴充定義不相符。定義不符,有下列幾個可能性。
  • EXTEND USING 子句索引擴充名稱後面的引數數量,不等於索引擴充實例參數數量。
  • EXTEND USING 子句索引擴充名稱後面的引數資料類型, 不完全符合(包含長度或精準度和小數位數)索引擴充相關實例參數的資料類型。
  • 索引指定的直欄數目不同於索引擴充來源鍵的參數數目。
  • 索引直欄的資料類型,不完全符合(包含長度或精準度和小數位數)索引擴充相關來源鍵參數的資料類型。 有一個次類型資料類型完全符合的異常狀況。 索引直欄可能是指定為相關來源鍵參數之資料類型的次類型。

無法處理該陳述式。

使用者回應

變更索引定義,讓索引擴充相符。

sqlcode:-20039

sqlstate:428E0

SQL20040N 範圍產生表格函數 range-function-name 的結果類型或號碼,與索引擴充 index-ext-name 的主要轉換表格函數 transform-function-name 不一致。

解說

生產範圍函數必須:
  • 最多傳回索引鍵轉換函數傳回之直欄數的二倍
  • 直欄數是奇數(傳回直欄的前半部是開始索引鍵值,後半部是結束索引鍵值)
  • 讓類型相同的每一個開始鍵直欄,成為對應的結束鍵直欄
  • 讓每一個開始鍵直欄類型,等於對應的轉換函數直欄。

更精確的說,也就是讓 a1:t1,... an:tn 成為函數結果直欄和索引鍵轉換函數的資料類型。 生產範圍函數的函數結果直欄,必須是 b1:t1,...,bm:tm,c1:t1,...,cm:tm, 其中 m <= n,"b" 直欄是開始索引鍵直欄,"c" 直欄是結束索引鍵直欄。

無法處理該陳述式。

使用者回應

指定一個與主要轉換表格函數一致的範圍產生表格函數。

sqlcode:-20040

sqlstate:428E1

SQL20041N 目標鍵參數的類型或數目,不符合索引擴充 index-ext-name 的索引鍵轉換函數 function-name 的類型或數目。

解說

目標鍵參數的數目,必須符合索引鍵轉換函數傳回的結果數目。 目標鍵參數類型必須完全符合對應的函數結果類型。

無法處理該陳述式。

使用者回應

指定正確的參數類型和數目,當做目標鍵參數。

sqlcode:-20041

sqlstate:428E2

SQL20042N 超出了索引擴充 index-ext-name 中的最大可容許 parm-type 參數。最大值為 max-value

解說

指定了太多參數。如果 parm-type 是 INDEX EXTENSION, 最多可以指定 max-value 個實例參數。如果 parm-type 是 INDEX KEYS, 最多可以指定 max-value 個主要來源參數。

無法處理該陳述式。

使用者回應

指定的參數不要超過上限數。

sqlcode:-20042

sqlstate:54046

SQL20043N 常式 routine-name 的引數無效。原因碼 = reason-code

解說

常式 routine-name 可能是 FILTER USING 子句中 所參照的轉換函數、產生範圍之函數、或常式 (function or method)。 原因碼指出引數為何無效:
1
對索引鍵轉換函數而言,此引數並不是觀察者方法或索引擴充實例參數。
2
當作引數使用的表示式,使用了指定 LANGUAGE SQL 的常式。
3
當做引數使用的表示式,是子查詢。
4
當作引數使用的表示式資料類型不能是結構化類型。
5
索引鍵轉換函數的引數資料類型不能為結構化資料類型 LOB、DATALINK、XML、LONG VARCHAR 或 LONG VARGRAPHIC。
6
用作引數的表示式包含 XMLQUERY 或 XMLEXISTS 表示式。

無法處理該陳述式。

使用者回應

指定有效的函數引數。

sqlcode:-20043

sqlstate:428E3

SQL20044N 常式 routine-name 或 CASE 表示式在 CREATE INDEX EXTENSION 或 CREATE FUNCTION 陳述式中無效。原因碼 = reason-code

解說

常式 (function or method) routine-name 在 CREATE INDEX EXTENSION 或 CREATE FUNCTION 陳述式中的使用位置無效。如果 routine-name 是空白的,則用來過濾的 CASE 表示式無效。原因碼指出原因。
1
索引鍵轉換函數不是表格函數。
2
索引鍵轉換函數不是外部函數。
3
索引鍵轉換函數是不同的函數。
4
索引鍵轉換函數是外部動作函數。
5
生產範圍函數不是表格函數。
6
生產範圍函數不是外部函數。
7
生產範圍函數是不同的函數。
8
生產範圍函數是外部動作函數。
9
索引過濾函數不是外部函數。
10
索引過濾函數是不同的函數。
11
索引過濾函數是外部動作函數。
12
過濾函數或 CASE 表示式的結果類型並不是整數資料類型。
13
CASE 表示式中使用了子查詢,或者子查詢被當作過濾函數的引數使用。
14
索引鍵轉換函數與資料庫的編碼方法不相同。
15
範圍產生函數與資料庫的編碼方法不相同。
16
索引過濾函數與資料庫的編碼方法不相同。
17
過濾函數不是外部函數。
20
XMLQUERY 或 XMLEXISTS 會用於 CASE 表示式,或用作過濾函數的引數。

無法處理該陳述式。

使用者回應

如果 routine-name 不是空白的,請遵循 在 CREATE INDEX EXTENSION 或 CREATE FUNCTION 陳述式的特定子句中 指定函數或方法的規則,來指定常式。否則,請遵循在 FILTER USING 子句中使用 CASE 表示式的規則,來指定 CASE 表示式。

sqlcode:-20044

sqlstate:428E4

SQL20045N 索引擴充 index-ext-name 中的實例參數 parameter-name 的資料類型無效。

解說

實例參數的資料類型必須是下列一項: VARCHAR、VARGRAPHIC、INTEGER、DECIMAL 或 DOUBLE。

無法處理該陳述式。

使用者回應

指定有效的資料類型給實例參數 parameter-name

sqlcode:-20045

sqlstate:429B5

SQL20046N predicate-string 後的 SELECTIVITY 子句,只能 在使用者定義述詞有效時指定。

解說

指定 SELECTIVITY 子句所用的述詞不含有效的使用者定義函數。有效的使用者定義函數 包括 PREDICATES 子句及符合該述詞的 WHEN 子句。SELECTIVITY 子句一定要用使用者定義 述詞來指定。

無法處理該陳述式。

使用者回應

請移除述詞後的 SELECTIVITY 子句。

sqlcode:-20046

sqlstate:428E5

SQL20047N 在索引擴充 index-ext-name 中找不到搜尋方法 method-name

解說

使用者定義的述詞開發規則中參照的方法 method-name, 必須符合索引擴充 index-ext-name 指定的其中一個搜尋方法。

無法處理該陳述式。

使用者回應

指定索引擴充定義一種方法。

sqlcode:-20047

sqlstate:42743

SQL20048N 方法 method-name 的搜尋引數與索引擴充 index-ext-name 中相對應搜尋方法中的搜尋引數不符。

解說

提供給方法 method-name 的搜尋引數, 與索引擴充 index-ext-name 中相對應搜尋方法的引數不符。引數數目或類型,不符合參數定義的數目或類型。

無法處理該陳述式。

使用者回應

指定符合索引擴充所定義參數的搜尋引數。

sqlcode:-20048

sqlstate:428E6

SQL20049N AS PREDICATE WHEN 子句中比較運算子後面的運算元類型,不完全符合 RETURNS 類型。

解說

使用者定義的述詞定義無效。AS PREDICATE WHEN 子句中比較運算子後面的運算元類型,不完全符合函數的 RETURNS 類型。

無法處理該陳述式。

使用者回應

使用正確的資料類型來指定運算元。

sqlcode:-20049

sqlstate:428E7

SQL20050N 搜尋目標或搜尋引數 parameter-name 不符合所建立的函數中的名稱。

解說

索引開發規則中的每個搜尋目標,都必須符合所建立函數的某個參數名稱。 索引開發規則中的每個搜尋引數,都必須符合 EXPRESSION AS 子句中的表示式名稱,或符合所建立函數的參數名稱。 參數名稱必須在函數的參數清單中指定。

無法處理該陳述式。

使用者回應

請在搜尋目標或搜尋引數中指定有效的函數名稱。

sqlcode:-20050

sqlstate:428E8

SQL20051N 引數 parameter-name 不能在同一開發規則中扮演搜尋目標和搜尋引數的雙重角色。

解說

函數參數在開發子句中不能指定成引數加上 KEY, 也不能指定成所指定的方法引數加上 USE 關鍵字。

無法處理該陳述式。

使用者回應

最多只能在一個搜尋目標或搜尋引數中指定函數的參數名稱。

sqlcode:-20051

sqlstate:428E9

SQL20052N 不能更新物件 ID 直欄 column-name

解說

UPDATE 陳述式包含設定物件 ID (OID) 直欄。不能更新 OID 直欄。

無法處理該陳述式。

使用者回應

移除 UPDATE 陳述式中的 column-name 的 SET。

sqlcode:-20052

sqlstate:428DZ

SQL20053N 結構化類型的視圖 view-name 中的全選無效。原因碼 = reason-code

解說

結構化類型的視圖 view-name 定義中指定的全選, 不符合結構化類型視圖的全選規則。可能有下列幾個原因碼。
1
子視圖定義中包含共用表格表示式,或是子視圖定義中的分支並不包含單一表格、視圖、暱稱或別名。
2
資料庫管理程式無法保證表格階層結構上之分支的列集, 與已結構化類型之視圖階層結構的其餘部分中, 相同之表格階層結構上所有分支的列集有所不同。
3
在主視圖的階層結構上,分支的第一個表示式:
  • 不是 FROM 子句參照的結構化類型的表格或結構化類型視圖的物件 ID 直欄,而且沒有使用 REF IS 子句中的 UNCHECKED 選項,或者
  • 如果 FROM 子句中的表格不是結構化類型的表格,則直欄可為空值,或未在直欄中定義唯一索引,而且沒有使用 REF IS 子句中的 UNCHECKED 選項,或者
  • 與子視圖中,同一階層結構上之分支中的表示式不同。
4
子視圖的分支範圍所包含的表格或視圖, 不是超視圖的任何分支中所參考之表格或視圖的子表格或子視圖,而且子視圖會使用 EXTEND AS,或者主視圖沒有開啟 REF IS 子句中的 UNCHECKED 選項。
5
全選包括參照 NODENUMBER 或 PARTITION 函數、非決定函數或外部動作函數。
6
如果其超視圖中的任何分支範圍包括同一階層結構中的表格或視圖,而沒有使用 OUTER,則子視圖中的分支範圍不可以包括 OUTER 表格或視圖。
7
子視圖範圍涵蓋它自己的視圖階層結構中的一個視圖。
8
子視圖使用的設定作業不是其定義中的 UNION ALL,或者,在定義中使用了 UNION ALL, 但沒有在主視圖的 REF IS 子句中指定 UNCHECKED 選項。
9
子視圖包含 UNION ALL 的二個分支,而該 UNION ALL 的範圍包括同一表格階層結構或視圖階層結構。
10
子視圖定義包含 GROUP BY 或 HAVING 子句。

使用者回應

根據 reason-code 來變更視圖定義的全選。
1
FROM 子句只使用一個表格或視圖。用主視圖的 REF IS 子句的 UNCHECKED 選項, 將複合選取封裝至結構化類型視圖範圍可涵括的視圖中。
2
在每一個分支的 FROM 子句中,指定不同的表格或視圖,而這每一個分支都與已用在視圖階層結構中的分支不同; 或是使用述詞,清楚地定義每一個分支的列集, 在與結構化類型階層結構中的其他分支的列集相較時,能分辨出不同處。
3
根視圖的第一個直欄必須符合規則,才能成為有效的結構化類型視圖物件 ID 直欄。 請考慮在 ref is 子句中使用 UNCHECKED 選項。
4
指定子視圖的分支的 FROM 子句所指定之表格或視圖的子表格或子視圖。 或在主視圖定義中使用 UNCHECKED 選項, 並在子視圖定義中使用 AS(不要有 EXTEND)子句。
5
移除參照全選函數。
6
如果在此階層結構上的分支中,這是所使用的第一個子視圖, 則請變更 FROM 子句,這樣就不會用到 OUTER 了。如果超視圖要使用 OUTER,請將 OUTER 併入子視圖的 FROM 子句中。
7
請勿取用同一階層結構中其他視圖上的子視圖。
8
如果使用了 UNION ALL,請在主視圖的 REF IS 子句中使用 UNCHECKED 選項, 使子視圖定義中可容許數個分支。 若需其他設定作業,請將設定作業封裝在視圖中, 並且在子視圖中使用 UNCHECKED 選項,以容許取用共通的視圖。
9
將分支合為一體,以在其共通的超表格或超視圖之間選取, 並使用述詞(例如:類型述詞)來過濾出所需的橫列。
10
將 GROUP BY 及 HAVING 子句封裝至視圖中, 並且在主視圖中使用 UNCHECKED 選項,以容許取用共通的視圖。

sqlcode:-20053

sqlstate:428EA

SQL20054N 未執行作業,因為表格處於作業的無效狀態中。表格名稱:table-name。原因碼:reason-code

解說

表格狀態不容許此作業。原因碼指出阻止作業的表格狀態。

21

表格呈「Datalink 協調擱置 (DRP)」狀態或「Datalink 無法協調 (DRNP)」狀態。

22

無法新增或變更所產生的直欄表示式,因為表格不是處於核對擱置模式。

23

已執行建議的 REORG 變更之數目上限。在執行 reorg 前,最多可在表格上進行三個建議的 REORG 作業,以更新表格橫列,使其符合現行綱目。

24

在同一工作單元中,若對表格中最後一個 LOB 或 LONG 直欄執行具有 DROP COLUMN 子句的 ALTER TABLE 陳述式,便不允許對 LOB 或 LONG 直欄執行具有 ADD COLUMN 子句的 ALTER TABLE 陳述式。

此外,在資料庫伺服器 9.7 版及更新版本上,在同一工作單元中,若對表格中的最後一個 XML 直欄執行具有 DROP COLUMN 子句的 ALTER TABLE 陳述式,則不容許對 XML 直欄執行具有 ADD COLUMN 子句的 ALTER TABLE 陳述式。

25

表格處於設定完整性擱置狀態。

26

表格的資料庫分割區群組目前若正在重新配送中,則不容許在該表格上執行 ALTER TABLE ... ATTACH PARTITION 或 ALTER TABLE ... DETACH PARTITION 陳述式。

27

變更表或複製綱目作業呼叫一內部程序,以管理資料庫物件。此程序使用的 SYSTOOLS.DB2LOOK_INFO 表格為無效狀態,無法執行變更或複製作業。SYSTOOLS.DB2LOOK_INFO 表格可以是舊版本,或是與程序預期完全不同的版本。

29

因為表格具有一個處於下列三種狀態之一的分割區,所以不容許清空或截斷表格的作業:

  1. 尚未檢查是否完整的連接分割區 (SYSCAT.DATAPARTITIONS.STATUS = 'A')。
  2. 分離的分割區,而且有需要依據這些分離分割區進行漸進式維護的相依表格 (SYSCAT.DATAPARTITIONS.STATUS = 'D')。
  3. 擱置索引清理的分離分割區 (SYSCAT.DATAPARTITIONS.STATUS = 'I')。
30

當符合下列三個條件時,無法重新啟動 LOAD 作業:

  1. LOAD 作業無法在 BUILD、DELETE 或 INDEX COPY PHASE 中執行
  2. 目標表格包含 XML 直欄
  3. 下列其中一項也為真:
    • 表格包含 XML 直欄中定義的唯一索引
    • 已使用原始 LOAD 指令指定 ALLOW READ ACCESS
    • 已指定 COPY YES
43

分割的表格已分離相依表格,且無法支援建立分割的索引。

44

表格是 ALTER TABLE 陳述式之連接分割區作業的來源表格,而且由於 MDC 轉出,表格具有進行中的延遲索引清理作業。因為分割的索引不支援使用延遲的索引清理機制的 MDC 轉出,所以如果在來源表格上,有任何在連接作業期間將保留的 RID 索引、任何未重建的 RID 索引,以及任何正在擱置已轉出區塊的非同步索引清理的 RID 索引時,將不容許連接作業。

49

ALTER TABLE 陳述式指定已變更直欄的 SET DATA TYPE,以及 REORG 擱置於表格上。

50

無法對表格執行作業,因為目前正在背景處理程序中建立表格的字典。

使用者回應

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

21

請參閱《管理手冊》,取得「資料鏈結一致化擱置 (DRP)」及「資料鏈結不可能一致化 (DRNP)」狀態的資訊,以採取適當的動作。

22

請在變更表格前使用 SET INTEGRITY FOR table-name OFF,然後變更表格,並使用 SET INTEGRITY FOR table-name IMMEDIATE CHECKED FORCE GENERATED 來為 新建或變更的直欄產生值。

23

使用重組表格指令重組表格。

24

完成捨棄最後一個 LOB、LONG 或 XML 直欄的工作單元,然後重新發出指令。

25

透過搭配使用 SET INTEGRITY 陳述式與 IMMEDIATE CHECKED 選項,將表格移出設定完整性擱置狀態,然後重新執行該作業。

26

請等待 REDISTRIBUTE DATABASE PARTITION GROUP 指令完成,再重新發出 ALTER TABLE 陳述式。

27

請重新命名或捨棄 SYSTOOLS.DB2LOOK_INFO 表格。內部程序將建立 SYSTOOLS.DB2LOOK_INFO 表格的正確版本。請重新提交變更表格或複製綱目作業。

29

視正在封鎖作業之表格分割區的狀態而定,採取適當的動作,然後重新發出指令:

  1. SYSCAT.DATAPARTITIONS.STATUS = 'A':在具有連接分割區的表格上,使用 IMMEDIATE CHECKED 或 IMMEDIATE UNCHECKED 選項執行 SET INTEGRITY 陳述式。
  2. SYSCAT.DATAPARTITIONS.STATUS = 'D':在仍需依據分離分割區進行漸進式維護的相依立即具體化查詢及暫置表格上,使用 IMMEDIATE CHECKED 選項來執行 SET INTEGRITY 陳述式。查詢 SYSCAT.TABDETACHEDDEP 型錄視圖,以尋找這些分離的相依表格。
  3. SYSCAT.DATAPARTITIONS.STATUS = 'I':等到分離分割區的索引清理作業完成。查詢 SYSIBM.SYSTASKS 以判定進度。
30

遵循下列步驟來回應原因碼 30:

  1. 使用 LOAD TERMINATE 指令,將表格的狀態從「載入進行中」變更為「正常」。
  2. 重新執行原始 LOAD 指令。
43

搭配使用 SET INTEGRITY 陳述式與 IMMEDIATE CHECKED 選項以維護相依表格,然後建立分割的索引。

44

等待來源表格上的延遲索引清理作業完成後,重新發出 ALTER TABLE 陳述式來連接分割區。若要監視轉出清理的進度,請使用 LIST UTILITIES 指令。

49

如果嘗試的資料類型變更與擱置資料類型變更位於相同的工作單元中,則請 Rollback 擱置變更,然後重新發出 ALTER TABLE 陳述式。否則,請使用 REORG TABLE 指令重組表格,然後重新嘗試資料類型變更。

50

等待正為表格建立字典的背景處理程序完成,然後重新發出指令。

sqlcode:-20054

sqlstate:55019

SQL20055N 選取清單中的結果直欄資料類型,不相容於直欄 column-name 定義的資料類型。

解說

column-name 對應的選取清單表示式資料類型,無法指派給結構化類型屬性的資料類型。

使用者回應

請檢查表格和相關結構化類型的現行定義。確定所指定直欄的選取清單表示式資料類型,是可指派給結構化類型屬性的資料類型。

sqlcode:-20055

sqlstate:42854

SQL20056N 在處理 DB2 Data Links Manager name 時,發生錯誤。原因碼 = reason-code

解說

在處理該陳述式的 DB2 Data Links Manager 時,發生錯誤,如下列原因碼所示。
01
偵測到 DB2 Data Links Manager 上的資料與表格中的 DATALINK 值不一致。
02
在處理程序期間,DB2 Data Links Manager 到達資源上限。
03
DB2 Data Links Manager 不支援長度大於 128 個字元的檔案路徑名稱。
99
DB2 Data Links Manager 發生內部處理錯誤。

無法處理該陳述式。

使用者回應

請根據下列的原因碼來採取行動。
01
在表格上執行一致化公用程式。
02
DB2 Data Links Manager 管理者應該在診斷日誌中找出資源,並執行正確的動作。
03
您應該確定要儲存在 DATALINK 直欄的檔案路徑名稱(不包括檔案系統字首)沒有超過 128 個字元。例如,在 URL "http://server.com/dlfiles/dir1/.../file1" 中, -- 假設 DLFS 檔案系統字首是 "/dlfiles" -- 檔案路徑名稱 "/dir1/.../file1" 不能超過 128 個字元。
99
儲存 DB2 Data Links Manager 和資料庫管理程式中的診斷日誌,並聯絡 IBM 服務人員。

sqlcode:-20056

sqlstate:58004

SQL20057N 當超視圖中的相對應直欄可以更新時,子視圖 view-name 中的直欄 column-name 就不能定義成唯讀。

解說

子視圖 view-namecolumn-name 識別的直欄,(隱含)定義成唯讀。 超視圖 view-name 包括可以更新的相關直欄。 結構化類型視圖階層結構中的直欄,不能從「可更新」變更成「唯讀」。

無法處理該陳述式。

使用者回應

變更 CREATE VIEW 陳述式,讓子視圖 view-name 的直欄成為可更新。 或者,捨棄超視圖,使用 READ ONLY 子句重新建立,把直欄強制成唯讀。

sqlcode:-20057

sqlstate:428EB

SQL20058N 因為為具體化查詢表格 table-name 指定的全選違反限制,所以陳述式失敗。原因碼 = reason-code

解說

限制適用於具體化查詢表格定義中所使用全選的內容。部分限制是根據具體化查詢表格選項(例如 REFRESH DEFERRED 或 REFRESH IMMEDIATE)。其他限制則是根據是否抄寫表格。陳述式中傳回此狀況的全選,至少違反其中一個限制。

如果在建立暫置表格期間傳回此訊息,錯誤適用於具體化查詢表格(與暫置表格相關聯)定義中所使用的查詢。

原因碼指出違反的限制:

1

一個以上的選取清單元素沒有名稱。

2

全選已參照不受支援的物件類型。

3

全選已包含不受支援資料類型的直欄參照或表示式。

4

全選已包含違反一個以上限制的直欄參照或表示式或函數。

5

REPLICATED 選項已違反限制。

6

指定 REFRESH IMMEDIATE 時,全選已違反限制

7

REFRESH IMMEDIATE 選項已違反限制。

8

如果全選已包含 GROUP BY 子句,並且違反限制,則已指定 REFRESH IMMEDIATE 選項。

9

已指定 REFRESH IMMEDIATE 選項,而且全選不是次選取。

10

FROM 子句參照了多個表格,而且已指定 REFRESH IMMEDIATE 選項或 MAINTAINED BY REPLICATION 選項。

11

已指定 REFRESH IMMEDIATE 選項,而且 UNION ALL 或 JOIN 的輸入表格表示式已包含一個以上的聚集函數。

12

具體化查詢表格的漸進式維護所需的空間超出資料庫中目前可用的最大系統暫存表格空間。

13

全選已包括 CONNECT BY 子句。

14

已在 CREATE TABLE 陳述式中指定 MAINTAINED BY FEDERATED_TOOL,而且 select 子句已包含基本表格的參照。

15

嘗試使用下列其中一種方式建立 MQT:

  • 直欄組織 MQT 未定義為 MAINTAINED BY REPLICATION,但參照橫列組織表格
  • 直欄組織 MQT 未指定 ORGANIZE BY COLUMN 子句
  • 橫列組織 MQT 參照直欄組織表格
16

嘗試使用下列其中一種方式,建立直欄組織的具體化查詢表格 (MQT):

  • 未指定 MAINTAINED BY USER 子句
  • 未指定 MAINTAINED BY REPLICATION 子句
  • 透過指定 MAINTAINED BY SYSTEM 子句(無需指定 REFRESH DEFERRED 和 DISTRIBUTE BY REPLICATION 子句)
  • 透過指定 REFRESH IMMEDIATE 子句
17

已指定 MAINTAINED BY REPLICATION 子句建立備用表格,但全選所參照的表格違反限制,或遺漏備用表格的需求。

18

已指定 MAINTAINED BY REPLICATION 子句建立備用表格,但全選所參照的直欄違反限制,或遺漏備用表格的需求。

19

已指定 MAINTAINED BY REPLICATION 子句建立備用表格,但全選包括建立備用表格時不支援的表示式或子句。

20

已指定 MAINTAINED BY REPLICATION 子句建立備用表格,但備用表格的直欄名稱未確切地符合基本表格的所選取直欄名稱。

使用者回應

請依下列原因碼來回應:

1

確定所有元素都有名稱。您可以使用 AS 子句來命名表示式,或明確地命名具體化查詢表格定義的直欄清單中的所有直欄。

2

請不要參照不受支援的物件。

3

請不要參照不受支援的直欄或表示式類型。

4

請不要參照不受支援的直欄、表示式或函數。

5

將具體化查詢表格建立成不抄寫。或者,更正陳述式,讓查詢參照單一表格,而且未包含子查詢、聚集或 PARTITIONING 子句。

6

將具體化查詢表格建立成 REFRESH DEFERRED,或者:

  • 移除暱稱參照。
  • 移除 DISTINCT。
  • 移除特別暫存器,以及依賴特別暫存器值的內建函數。
  • 移除不是固定函數,或將它取代為固定函數。
  • 移除所有 OLAP、取樣及文字函數。
  • 從表示式移除聚集函數,或將表示式變更為聚集函數的簡式參照。
  • 移除聚集函數,或新增 GROUP BY 子句。
  • 更正 CREATE TABLE 陳述式,以確定不參照任何遞迴共用表格表示法。
  • 移除子查詢。
7

將具體化查詢表格建立成 REFRESH DEFERRED,或者:

  • 更正 CREATE TABLE 陳述式,以確定所有 GROUP BY 項目都位於選取清單中。
  • 更正 GROUP BY 子句,以確定沒有重複的分組集。
  • 移除可為空值的直欄 C,或在選取清單中新增 GROUPING(C)。
  • 更正 CREATE TABLE 陳述式,以確定查詢中參照的每一個表格至少有一個唯一索引鍵出現在選取清單中。
8

將具體化查詢表格建立成 REFRESH DEFERRED,或者:

  • 將 COUNT(*) 或 COUNT_BIG(*) 新增至選取清單,或移除 GROUP BY 子句。
  • 將 COUNT(*) 新增至選取清單、移除 SUM(C),或將直欄 C 變更為不可為空值。
  • 移除不受支援的聚集函數,或將它們取代為支援的函數。
  • 移除 HAVING 子句。
  • 更正 CREATE TABLE 陳述式,以確定 GROUP BY 子句包含所有分割鍵直欄。
9

將具體化查詢表格建立成 REFRESH DEFERRED,或將表格定義變更為子選取,或變更為 GROUP BY 的輸入表格表示式中的 UNION ALL。

10

使用下列其中一種方式來回應原因碼 10:

  • 如果已指定 REFRESH IMMEDIATE,而且 FROM 子句已使用明確 INNER JOIN 語法,請變更 FROM 子句來參照單一表格,或將明確 INNER JOIN 語法取代為隱含內部結合語法
  • 如果已指定 REFRESH IMMEDIATE,請將它取代為 REFRESH DEFERRED。
  • 如果已指定 MAINTAINED BY REPLICATION,請變更 FROM 子句來參照單一表格。
11

將具體化查詢表格建立成 REFRESH DEFERRED,或從 UNION ALL 或 JOIN 的輸入表格移除聚集函數。

12

將具體化查詢表格建立成 REFRESH DEFERRED,或是減少總橫列寬度或 MQT 的直欄數。建立分頁大小適當的系統暫存表格空間。

13

請確定全選未包括 CONNECT BY 子句。階層式查詢不可以用來建立具體化查詢表格。

14

重寫 CREATE TABLE 陳述式,讓 select 子句未包含基本表格的參照。

15

確定直欄組織 MQT 只參照直欄組織表格,或指定 MAINTAINED BY REPLICATION,或指定 ORGANIZE BY COLUMN。也請確定橫列組織 MQT 只參照橫列組織表格。然後重新發出陳述式。

16

確定陳述式包含下列其中一個子句,然後再重新發出該陳述式。

  • MAINTAINED BY USER
  • MAINTAINED BY REPLICATION
  • MAINTAINED BY SYSTEM(搭配 REFRESH DEFERRED 和 DISTRIBUTE BY REPLICATION 子句)
  • REFRESH DEFERRED(而不是 REFRESH IMMEDIATE)
17

若要在指定的基本表格上建立備用表格,請變更指定的基本表格,以便支援表格作為備用表格的基本表格。

18

若要在指定的基本表格上建立備用表格,請將不同直欄併入全選中,或確定指定的直欄滿足所有需求。

19

修改全選,以滿足建立備用表格的需求。

20

定義備用表格,以便備用表格的直欄名稱確切地符合基本表格的所選取直欄名稱。

sqlcode:-20058

sqlstate:428EC

SQL20059W 實體化的查詢表格 table-name 無法用來最佳化查詢的處理。

解說

執行查詢處理最佳化時, 資料庫管理程式目前未支援全選和 REFRESH DEFERRED 定義的具體化查詢表格。 這些規則是根據具體化查詢表格的選項(REFRESH DEFERRED 或 REFRESH IMMEDIATE)。CREATE TABLE 陳述式中傳回此狀況的全選,至少違反一個規則。請參閱「SQL 參照」。

已成功建立具體化查詢表格,但是僅會為直接參照具體化查詢表格的查詢遞送到該處。

使用者回應

不需要任何動作。 然而,如果具體化查詢想要將查詢的處理最佳化(其不直接參照具體化查詢表格),則可採下列方法達到此目的。請使用為 table-name 指定的全選建立視圖,然後使用只會從視圖執行 "SELECT *" 的全選,重建具體化查詢表格 table-name。使用這種方法,可以透過參照視圖的查詢,遞送具體化查詢表格。

sqlcode:+20059

sqlstate:01633

SQL20060N tbspace-id 中,表格 table-id 的索引 index-id 的索引擴充所使用的索引鍵轉換表格函數產生了重複列。

解說

索引 index-id 使用之索引擴充的 GENERATE USING 子句, 其所指定的按鍵轉換表格函數產生了複製列。對呼叫按鍵轉換表格函數而言, 不應該產生任何複製列。當在表格空間 tbspace-id 中為表格 table-id 的索引 index-id 插入或更新索引鍵值時,發生這個錯誤。

無法處理該陳述式。

使用者回應

必須為索引 index-id 之索引擴充使用的按鍵轉換表格函數修改程式碼, 使其避免產生複製列。

若要判斷索引名稱,請使用下列查詢:
SELECT IID, INDSCHEMA, INDNAME
    FROM SYSCAT.INDEXES AS I,
              SYSCAT.TABLES AS T
       WHERE IID = <index-id>
                 AND TABLEID = <table-id>
                 AND TBSPACEID = <tbspace-id>
                 AND T.TBASCHEMA = I.TABSCHEMA
                 AND T.TABNAME = I.TABNAME

sqlcode:-20060

sqlstate:22526

SQL20062N 類型 type-name 的轉換群組 group-name 中的轉換函數 transform-type 無法用於函數或方法。

解說

類型 type-name 之轉換群組 group-name 中所定義的 轉換函數無法用於函數或方法,因為該轉換函數不是以 SQL 所撰寫(以 LANGUAGE SQL 所定義)。 轉換群組無法用於這個函數或方法中。

無法處理該陳述式。

使用者回應

請為類型 type-name 指定一個含有 以 LANGUAGE SQL 定義之轉換函數的轉換群組。

sqlcode:-20062

sqlstate:428EL

SQL20063N 類型 type-name 必須指定 TRANSFORM GROUP 子句。

解說

函數或方法包含的參數或傳回的資料類型 type-name 不含所指定的轉換群組。

無法處理該陳述式。

使用者回應

請用為 type-name 定義的轉換群組名稱來指定 TRANSFORM GROUP 子句。

sqlcode:-20063

sqlstate:428EM

SQL20064N 轉換群組 group-name 不支援任何指定為參數或傳回資料類型的資料類型。

解說

就包含在函數或方法的參數清單或 RETURNS 子句中的任何資料類型而言, 並未定義 TRANSFORM GROUP 子句中指定的轉換群組 group-name

無法處理該陳述式。

使用者回應

請從函數或方法定義中移除轉換群組。

sqlcode:-20064

sqlstate:428EN

SQL20065N 資料類型 type-name 的轉換群組 group-name 無法用來轉換結構化類型,以與用戶端應用程式搭配使用。

解說

當執行用戶端應用程式的轉換時,資料類型 type-name 的轉換群組 group-name 所定義的轉換函數無法使用。原因可能出在 用戶端應用程式不支援的轉換函數的定義中。不支援的轉換函數可能是:
  • 是 ROW 函數的 FROM SQL 函數
  • 含有超過一個參數的 TO SQL 函數

無法處理該陳述式。

使用者回應

若為靜態內含 SQL,請使用 TRANSFORM GROUP 連結選項指定不同的轉換群組。若為動態 SQL,請使用 SET DEFAULT TRANSFORM GROUP 陳述式來指定不同的轉換群組。

sqlcode:-20065

SQL20066N transform-type 轉換函數在資料類型 type-name 的轉換群組 group-name 中並未定義。

解說

對用於函數或方法定義中的轉換群組而言,需要資料類型 type-name 的 轉換群組 group-nametransform-type 轉換函數。

無法處理該陳述式。

使用者回應

如果是建立函數或方法,請在函數或方法定義中指定不同的轉換群組。如果是參照 動態 SQL 陳述式中的結構化類型,請為 CURRENT DEFAULT TRANSFORM GROUP 特別暫存器 指定不同的轉換群組。或者,請為資料類型 type-name 新增 transform-type 轉換函數至轉換群組 group-name

sqlcode:-20066

sqlstate:42744

SQL20067N transform-type 轉換函數在資料類型 type-name 的轉換群組 group-name 中定義了多次。

解說

轉換群組中只能指定一次 TO SQL 或 FROM SQL 轉換函數。資料類型 type-name 的轉換群組 group-name 至少定義了兩個 FROM SQL 及/或 TO SQL 轉換函數。

無法處理該陳述式。

使用者回應

請從轉換定義中的 group-name 刪除 TO SQL 或 FROM SQL 定義, 使每種都只有一個。

sqlcode:-20067

sqlstate:42628

SQL20068N 可能沒有定義結構化類型 type-name,所以會直接或間接使用它本身的其中一個屬性類型。屬性 attribute-name 造成這種直接或間接的使用。

解說

直接使用:在下列情況下,A 類型直接使用 B 類型:
  • A 類型有 B 類型的屬性
  • B 類型是 A 的次類型或超類型。
間接使用:在下列情況下,A 類型間接使用 B 類型:
  • A 類型使用 C 類型,而 C 類型使用 B 類型。

您不能將類型定義成使其中一個屬性類型直接或間接使用本身,屬性 attribute-name 的類型才是造成這種直接或間接使用的原因。

使用者回應

請評估類型,並將造成這種直接或間接使用的屬性類型移除。

sqlcode:-20068

sqlstate:428EP

SQL20069N routine-type routine-name 的 RETURNS 類型與主旨類型不同。

解說

方法 method-name 會指定 SELF AS RESULT。方法的 RETURNS 資料類型必須與方法的主旨資料類型相同。

使用者回應

請變更方法 method-name 的 RETURNS 類型,使其符合主旨類型。

sqlcode:-20069

sqlstate:428EQ

SQL20075N 無法建立或變更索引或索引擴充 index-name,因為 column-name 的長度超過 255 個位元組。

解說

無法建立或變更索引,因為索引鍵直欄的長度大於 255。

  • index-name 為索引名稱。
  • column-name 為索引鍵直欄的名稱。如果此錯誤是因為 ALTER TABLE 或 ALTER NICKNAME 作業所引起,則 column-name 的值為直欄號碼。

無法建立索引擴充,因為 GENERATE KEY 函數傳回的直欄大於 255 個位元組。

  • index-name 為索引擴充的名稱。
  • column-name 是 GENERATE KEY 函數傳回的直欄名稱。

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

使用者回應

如果建立索引,請從索引定義中移除直欄。如果變更表格,則請將新直欄的長度減少至所允許的最大值。 如果建立索引擴充,請指定不同的 GENERATE KEY 函數,或重新定義函數以去除直欄。

sqlcode:-20075

sqlstate:54008

SQL20076N 沒有為所指定動作或作業啟用資料庫的實例。原因碼 = reason-code

解說

在實例層次偵測到錯誤。所要求的作業無法完成,因為尚未安裝所指定的功能區,或是尚未為該實例啟用所指定的功能區。

以下列示是您可以在實例層次上啟用的原因碼及相關功能區:

  1. 針對單一陳述式中的多個資料來源來執行分散式要求作業的能力。

使用者回應

針對所要求的動作或作業來啟用實例。 首先,請安裝所指定的功能區(如果沒有的話)。 然後,啟用所指定的功能區。啟用步驟需視 reason-code 而定:

  1. 若為聯合伺服器,請將 DBM 變數 <FEDERATED> 設為 YES,然後重新啟動資料庫管理程式。

sqlcode:-20076

sqlstate:0A502

SQL20077N 無法建構具有 Datalink 類型屬性的結構化類型物件。

解說

嘗試呼叫具有 Datalink 及/或 Reference 類型屬性之結構化類型的建構子。 目前並不支援此功能。 在 6.1 版以下,對於含有 Reference 類型屬性的結構化類型物件, 也可能會發出這個錯誤。

無法處理該陳述式。

使用者回應

請執行下列其中一個步驟來解決問題:

  1. 從程式中移除該類型之建構子的呼叫指令。
  2. 從結構化類型的定義中移除 Datalink(或 Reference)類型屬性(如果有相依於此類型的任何表格存在,可能就無法這樣做)。

sqlcode:-20077

sqlstate:428ED

SQL20078N 不能使用作業 operation-type 來處理類型 object-type 的階層結構物件 object-name

解說

作業 operation-type 試圖使用類型 object-type 的階層結構物件 object-name。 此作業不支援階層結構物件的處理程序。

無法處理陳述式。

使用者回應

驗證所使用的物件名稱是正確的。 就物件類型 TABLE 或 VIEW 而言, 該物件必須是表格或視圖階層結構中的子表格名稱。 在某些情況下,該物件必須特別指出根表格的名稱。 就類型索引的物件而言,其名稱必須是在子表格上所建立之索引的名稱。

sqlcode:-20078

sqlstate:42858

SQL20080N 無法捨棄 method-name 的方法規格,因為已有方法主體存在。

解說

方法規格 method-name 仍有現存方法主體必須捨棄,才能捨棄該方法規格。

無法處理該陳述式。

使用者回應

請使用含有相同方法規格的 DROP METHOD 陳述式來捨棄方法主體, 然後再次發出 ALTER TYPE 陳述式來捨棄方法規格。

sqlcode:-20080

sqlstate:428ER

SQL20081N 無法為 LANGUAGE language-type 方法規格 method-name 定義方法主體。

解說

方法規格 method-name 是以 LANGUAGE language-type 所定義。 如果 LANGUAGE 為 SQL,則方法主體必須是 SQL 控制陳述式。對於其他語言, 則必須指定 EXTERNAL 子句,。

無法處理該陳述式。

使用者回應

請變更方法主體,使其符合方法規格中指定的 LANGUAGE。

sqlcode:-20081

sqlstate:428ES

SQL20082N 表示式的動態類型 expression-type-id 並不是 TREAT 規格中目標資料類型 target-type-id 的次類型。

解說

TREAT 規格中指定之表示式結果的動態資料類型為 expression-type-id。 指定的目標資料類型 target-type-id 是不容許使用的 expression-type-id 的適當次類型。

無法處理該陳述式。

使用者回應

請將 TREAT 規格的 target-type-id 變更為 expression-type-id 的超類型,或變更表示式,使結果的動態資料類型為 target-type-id 的次類型。

若要找出 expression-type-idtarget-type-id 的 資料類型名稱,請使用下列查詢:
   SELECT TYPEID, TYPESCHEMA, TYPENAME
      FROM SYSCAT.DATATYPES
      WHERE TYPEID IN INTEGER(
  expression-type-id),
   INTEGER(
    target-type-id
  )
)

sqlcode:-20082

sqlstate:0D000

SQL20083N routine-type routine-id 所傳回值的資料類型與指定為 RESULT 的資料類型不相符。

解說

方法 routine-id 指定 SELF AS RESULT, 因此會要求傳回的值的資料類型必須與用來呼叫方法的主旨資料類型相同。 就外部方法的類型而言,在 SQL 方法主體或 TO SQL 轉換函數中的 RETURN 陳述式 產生了不正確的資料類型。

無法處理該陳述式。

使用者回應

請變更方法或轉換函數的 RETURN 陳述式,以確定 所傳回值的資料類型是用來呼叫方法的主旨類型。

若要找出與 routine-id 相關的常式名稱,請使用下列查詢:
SELECT FUNCSCHEMA, FUNCNAME,
              SPECIFICNAME
      FROM SYSCAT.FUNCTIONS
WHERE  FUNCID = INTEGER(
         routine-id
       )

sqlcode:-20083

sqlstate:2200G

SQL20084N routine-type routine-name 會定義一個置換現存方法的關係。

解說

如果所有下列情況都符合的話,則會將主旨類型為 T 的方法 MT 定義成 會置換主旨類型為 S 的方法 MS:
  • MT 及 MS 有相同的不合格名稱,也有相同的參數數目。
  • T 是 S 的適當次類型。
  • MT 的非主旨參數類型,與相對應的 MS 非主旨參數類型相同。(在這裡, “same” 適用於基本類型,例如 VARCHAR,不管長度及精準度)。

函數及方法可能不是置換關係。這表示, 如果函數是個第一個參數為主旨 S 的方法, 則它一定不會置換其他 S 超類型的方法,而且它一定不會被其他 S 次類型的方法所置換。

再者,在下列情況下不支援置換關係功能:
  • 表格與橫列方法
  • 擁有 PARAMETER STYLE JAVA 的外部方法
  • 系統所產生的轉換方法及觀察方法

無法處理該陳述式。

使用者回應

請變更被定義為使用不同於 routine-name 常式名稱的常式,或變更常式的參數。

sqlcode:-20084

sqlstate:42745

SQL20085N 以 PARAMETER STYLE JAVA 定義的常式無法用 結構化類型 type-name 作為參數類型或傳回類型。

解說

常式以 PARAMETER STYLE JAVA 所定義,而且其中一個參數類型或傳回類型 是使用結構化類型 type-name 所定義的。本版的 DB2 不支援這種情況。

無法處理該陳述式。

使用者回應

請為此常式變更其他的參數樣式,或移除常式定義中的結構化類型。

sqlcode:-20085

sqlstate:429B8

SQL20086N 直欄的結構化類型值的長度超過系統限制。

解說

結構化類型直欄值的總大小(包括實例的描述子資料)超過十億位元組。 該直欄可以是 被直接插入或更新的直欄,也可以是被產生的直欄。

無法處理該陳述式。

使用者回應

請減少正指定給直欄的結構化類型值的大小。

sqlcode:-20086

sqlstate:54049

SQL20087N 無法在屬性指定中使用 DEFAULT 或 NULL。

解說

UPDATE 陳述式正使用屬性指定來設定結構化類型直欄中的屬性值。這種格式 的指定陳述式,不容許將關鍵字 DEFAULT 或 NULL 作為指定的右邊來使用。

無法處理該陳述式。

使用者回應

請為屬性指定的右邊指定表示式,或變更指定,使其不使用屬性指定語法。

sqlcode:-20087

sqlstate:428B9

SQL20089N 在同一個類型階層結構中,方法名稱不能與結構化類型名稱相同。

解說

所指定的方法名稱,與為結構化類型的超類型或次類型之一所定義的結構化類型相同。

無法處理該陳述式。

使用者回應

請指定不同的方法名稱。

sqlcode:-20089

sqlstate:42746

SQL20090W 在使用擁有 DATALINK 類型之 attribute-name 屬性的結構化類型上,被有效限制為類型化表格或類型化視圖的類型。

解說

屬性 attribute-name 是以 DATALINK 的類型或 以 DATALINK 為基礎的特殊類型來定義的。包含這種屬性的結構化類型 只能當作表格或視圖的類型使用。如果要當作表格或視圖的直欄類型使用, 則只能指定空值。

陳述式繼續處理。

使用者回應

請考慮刻意使用結構化類型。如果該類型將被當作直欄資料類型使用, 那麼請移除結構化類型中的屬性 attribute-name,或使用該屬性的 DATALINK 以外的資料類型。

sqlcode:+20090

sqlstate:01641

SQL20092N 因為 LIKE 子句中指定表格或視圖,而且無法在此環境定義中使用物件,所以陳述式失敗。

解說

CREATE GLOBAL TEMPORARY TABLE 陳述式或 DECLARE GLOBAL TEMPORARY TABLE 陳述式的 LIKE 子句,已指定其直欄定義為 IMPLICITLY HIDDEN 的表格名稱。由於所建立的暫存表格及宣告的暫存表格不支援隱式隱藏的屬性,無法在 LIKE 子句中指定表格。

使用者回應

指定未使用隱式隱藏的直欄來定義的表格名稱。

若要指定其中包含的直欄已定義為 IMPLICITLY HIDDEN 的已建立暫存表格或宣告的暫存表格,請使用 AS(全選)選項以明確在表格中指定這些直欄。因此,IMPLICITLY HIDDEN 屬性不會複製到所定義的直欄。

sqlcode:-20092

sqlstate:560AE

SQL20093N 無法將表格 table-name 轉換為具體化查詢表格,也無法將具體化查詢表格轉換為此表格。原因碼 = reason-code

解說

正使用 ALTER TABLE 陳述式來將表格從具體化查詢表格變更為 DEFINITION ONLY,或將一般表格轉換為具體化查詢表格。ALTER TABLE 陳述式失敗,原因如下列原因碼所示。

1

表格為類型化表格或階層結構表格。

2

表格並非具體化查詢表格,而且指定了 DEFINITION ONLY。

3

表格為抄寫的具體化查詢表格,而且指定了 DEFINITION ONLY。

4

表格至少定義了一個觸發程式。

5

表格至少定義了一個核對限制。

6

表格至少定義了一個唯一限制或唯一索引。

7

表格至少定義了一個參照限制。

8

表格在現存具體化查詢表格的定義中被參照。

9

表格在全選中被直接或間接(例如經由視圖)參照。

10

表格已經是具體化查詢表格。

11

現存表格的直欄數與全選的選取清單中定義的直欄數不符。

12

現存表格的直欄資料類型,與全選的選取清單中相對應的直欄不完全相符。

13

現存表格的直欄名稱,與全選的選取清單中相對應的直欄名稱不完全相符。

14

現存表格直欄的可空值性性質,與全選的選取清單中相對應直欄的可空值性性質不完全相符。

15

如果同一個 ALTER TABLE 陳述式中有其他表格變更,則無法執行此轉換。

16

已啟用查詢最佳化的現存視圖的定義中參照到此表格。

17

該表格為受保護表格。

18

全選參照不容許快取的暱稱。

19

表格為系統期間時間表格或歷程表。

20

表格具有安全管理者所定義的許可權或遮罩。

21

嘗試透過指定 MAINTAINED BY REPLICATION 子句來將表格轉換為備用表格,但是無法將表格轉換為備用表格,因為表格是依橫列進行組織。

22

嘗試透過指定 MAINTAINED BY REPLICATION 子句來將表格轉換為備用表格,但是無法將表格轉換為備用表格,因為表格具有主要索引鍵以外的唯一限制或索引,或主要索引鍵已定義為 NOT ENFORCED。

使用者回應

請依下列原因碼來回應:

1

無法將此表格轉換為具體化查詢表格。 請建立新的具體化查詢表格。

2

沒有必要轉換此表格。不需要任何動作。

3

抄寫的表格只能是具體化查詢表格。請建立新的表格。

4

請捨棄所有觸發程式,並重試 ALTER TABLE 陳述式。

5

請捨棄所有核對限制,並重試 ALTER TABLE 陳述式。

6

請捨棄所有唯一限制及唯一索引,並重試 ALTER TABLE 陳述式。

7

請捨棄所有參照限制,並重試 ALTER TABLE 陳述式。

8

請捨棄參照此表格的具體化查詢表格,並重試 ALTER TABLE 陳述式。

9

具體化查詢表格不能參照具體化查詢表格本身。請修改全選,以移除對所變更表格的直接或間接參照。

10

因為表格已經是具體化查詢表格,所以不容許執行這個作業。

11

請修改全選,使選取清單中包含正確的直欄數。

12

請修改全選,使結果直欄資料類型與相對應的現存直欄資料類型完全相符。

13

請修改全選,使結果直欄名稱與相對應的現存直欄名稱完全相符。

14

只有符合可空值性性質時,才能將此表格轉換為具體化查詢表格。請建立新的具體化查詢表格。

15

請在不含 SET MATERIALIZED QUERY AS 子句的 ALTER TABLE 陳述式中執行其他的表格變更。

16

請停用參照到此表格的視圖(已啟用查詢最佳化),然後重試 ALTER TABLE 陳述式。

17

移除對表格的保護,或不將其轉換為具體化查詢表格。

18

更正 ALTER TABLE 陳述式中指定的全選,使它不要參照不容許快取的暱稱。

19

更正表格名稱以指定不是系統期間時間表格或歷程表的表格,或使用指定 DROP VERSIONING 子句的 ALTER TABLE 陳述式來變更系統期間時間表格。

20

移除許可權及遮罩,或不會將它轉換為具體化查詢表格。

21

若要將表格轉換為備用表格,請先將表格轉換為依直欄組織。

22

若要將表格轉換為備用表格,請從表格中移除主要索引鍵以外的所有唯一限制及索引,或將主要索引鍵定義為 ENFORCED。

sqlcode:-20093

sqlstate:428EW

SQL20094N 因為直欄 column-name 是產生的直欄,或是使用資料類型 DB2SECURITYLABEL 所定義,而不能用於 BEFORE 觸發程式 trigger-name,所以陳述式失敗。

解說

指出的直欄無法指定在 BEFORE UPDATE 觸發程式的直欄名稱清單中,或設定在 BEFORE 觸發程式中,因為它是下列其中一項:

  • row-begin 直欄
  • row-end 直欄
  • transaction-start-ID 直欄
  • 產生的表示式直欄
  • 使用資料類型 DB2SECURITYLABEL 所定義的直欄

無法處理該陳述式。

使用者回應

從直欄名稱清單或 SET 指派陳述式中移除直欄(該指派陳述式會設定所產生直欄的新轉移變數),然後重新提交陳述式。

sqlcode:-20094

sqlstate:42989

SQL20102N 常式 routine-name 的 CREATE 或 ALTER 陳述式指定了 option-name 選項,這是常式所不容許的。

解說

在建立或變更常式 routine-name 時,指定了選項 option-name。 因為常式的其他性質,所以沒有將該選項套用至常式。 若為所獲得的程序,只能指定 ALTER PARAMETER,而且只能對所獲得的程序指定 ALTER PARAMETER。

使用者回應

若為 ALTER 陳述式,請確定所指定的常式正確。 否則,請移除導致失敗的選項,並重新發出陳述式。

sqlcode:-20102

sqlstate:42849

SQL20108N 對於儲存程序 procedure-name 所開啟的游標 cursor-name,位置 position-number 中的結果集包含未支援的資料類型。

解說

「程序名稱」所指名的儲存程序無法傳回至少一個「游標名稱」所指名的查詢結果集, 因為其中至少有一個直欄(直欄位置號碼)中所包含的資料類型, 不受「DRDA 應用程式要求器(用戶端)」或「DRDA 應用程式伺服器(伺服器)」所支援。 因此,無法呼叫儲存程序。

使用者回應

在伺服器上的儲存程序(程序名稱)中,修改游標(游標名稱)的 OPEN 陳述式(及後續的 FETCH 陳述式), 不要選取直欄(位置號碼)中所沒有支援的資料類型。 您可能必須修改已呼叫儲存程序的用戶端應用程式,以反映儲存程序中的變更。

sqlcode:-20108

sqlstate:56084

SQL20109W DB2 除錯器支援中,發生錯誤。原因碼:reason-code

解說

除錯器支援所發生的錯誤狀況,將會停用除錯功能,但不會影響正常的作業。 以下為原因碼清單:

  1. 尚未安裝除錯器支援。
  2. 除錯器表格中,除錯器用戶端的 IP 位址語法錯誤。
  3. 除錯器後端與除錯器用戶端之間的通訊,發生逾時。
  4. 在存取除錯器表格 DB2DBG.ROUTINE_DEBUG 時,發生問題。

使用者回應

  1. 驗證您已在資料庫伺服器機器上安裝除錯器選項。
  2. 確定除錯器表格中的 IP 位址語法正確。
  3. 確定用戶端上的除錯器常駐程式已啟動,而且用戶端及伺服器的埠相符。
  4. 驗證您已用正確的佈置來建立除錯器表格。

sqlcode:+20109

sqlstate:01637

SQL20111N 無法在這個環境定義中發出 SAVEPOINT、RELEASE SAVEPOINT 或 ROLLBACK TO SAVEPOINT 陳述式。原因碼 = reason-code

解說

無法處理此陳述式,因為它違反下列原因碼所指出的限制:

  1. 無法在觸發程式中發出儲存點。
  2. 無法在廣域交易中發出儲存點。

無法處理該陳述式。

使用者回應

請在觸發程式或廣域交易中移除 SAVEPOINT、RELEASE SAVEPOINT 或 ROLLBACK TO SAVEPOINT 陳述式。

sqlcode:-20111

sqlstate:3B503

SQL20112N 無法設定儲存點,因為儲存點已經存在,而且不支援巢狀儲存點。

解說

儲存點是具名的實體,代表工作單元內特定時間點的資料及綱目的狀態。有數種方式可讓您使用儲存點。例如,可以將資料庫回復至儲存點。可以使用 SAVEPOINT 陳述式,在交易內設定儲存點。在某些環境中,也可在同一個交易中設定多個或巢狀時間點。

由於下列原因,在 SAVEPOINT 陳述式中或 ATOMIC 複合 SQL 陳述式中發生錯誤時,便會傳回此訊息:

  • 已嘗試設定巢狀儲存點,但儲存點已存在,而且此環境不支援巢狀儲存點。
  • 已嘗試對不支援巢狀儲存點的聯合資料來源設定巢狀儲存點。

使用者回應

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

  • 嘗試設定新的儲存點之前,先釋放現存的儲存點。
  • 若要重新建立現存的儲存點,請執行下列步驟:
    1. 使用 RELEASE SAVEPOINT 陳述式,釋放現存的儲存點。
    2. 使用 SAVEPOINT 陳述式,重建儲存點。
  • 對於 ATOMIC 複合 SQL:在複合陳述式結束之後設定儲存點。

sqlcode:-20112

sqlstate:3B002

SQL20113N 無法由用 SELF AS RESULT 定義的方法 method-id 傳回空值。

解說

含有方法 ID method-id 的方法是用 SELF AS RESULT 定義的。因為 呼叫方法時使用了結構化類型的非空值實例,所以該方法無法傳回空值實例。

使用者回應

請變更方法的實作,以確定空值未被當作方法的回覆值傳回。有一種可能是 將傳回結構化類型的所有屬性設為空值。若要找出失敗方法的名稱,請使用下列查詢:
SELECT FUNCSCHEMA, FUNCNAME,
              SPECIFICNAME
        FROM SYSCAT.FUNCTIONS
        WHERE FUNCID = method-id

sqlcode:-20113

sqlstate:22004

SQL20114W 對於 USER 預設值的定義長度而言,表格 table-name 中的直欄 column-name 不夠長。

解說

直欄 column-name 被定義的長度小於 128 位元組。此直欄中 已指定 DEFAULT USER 子句。 因為 USER 特別暫存器被定義為 VARCHAR(128),所以若使用者 ID 比直欄長度長的使用者 嘗試指定預設值給 table-name,就會產生錯誤。使用者 ID 比 直欄長度長的使用者無法將此直欄插入或更新為預設值。

使用者回應

如果系統標準不容許使用者 ID 超出直欄長度,則可以忽略這個警告。若要避免這個警告產生, 直欄長度必須在 128 位元組以上。如果要變更直欄長度, 您可以捨棄表格後再重新建立表格,或者,若資料類型為 VARCHAR,則您可以 使用 ALTER TABLE 來增加直欄長度。

sqlcode:+20114

sqlstate:01642

SQL20115N 在轉換群組 group-name 中,routine-type routine-name 無法作為 transform-type 轉換函數。

解說

如果 routine-type 為 FUNCTION,則 routine-name 定義的函數無法當作轉換函數使用,因為它是一個內建函數。 如果 routine-type 為 METHOD,則 routine-name 定義的方法無法當作轉換函數使用,因為它是一個方法。

無法處理該陳述式。

使用者回應

請為轉換群組 group-nametransform-type 轉換函數指定不同的函數。

sqlcode:-20115

sqlstate:428EX

SQL20116N 搜尋目標 parameter-name 的資料類型與索引擴充 index-extension-name 所指定的來源鍵的資料類型不符。

解說

如果搜尋目標屬於內建或特殊資料類型,其類型必須與索引擴充中指定的來源鍵的 類型完全相符。 如果搜尋目標的資料類型為結構化類型,則它必須與 索引擴充中之來源鍵的資料類型處於相同的結構化類型階層結構中。

無法處理該陳述式。

使用者回應

請指定其資料類型與索引擴充中來源鍵的資料類型相符的搜尋目標。

sqlcode:-20116

sqlstate:428EY

SQL20117N OLAP 函數的視窗規格無效。 原因碼 = reason-code

解說

OLAP 函數呼叫的視窗規格(OVER 子句)未正確指定。 reason-code 指出不正確的規格。
1
在視窗規格中指定 RANGE 或 ROWS 沒有 ORDER BY。
2
指定了 RANGE,而且視窗 ORDER BY 子句包含不只一個 sort-key-expression。
3
已指定 RANGE,而範圍值的資料類型無法用於 包含視窗 ORDER BY 子句內 sort-key-expression 之資料類型的扣除表示式中。
4
UNBOUNDED PRECEDING 在 CURRENT ROW 後指定,或 UNBOUNDED FOLLOWING 在 CURRENT ROW 前指定。

無法處理該陳述式。

使用者回應

請變更視窗規格,以更正 reason-code 所指出的無效規格。
1
新增一個視窗 ORDER BY 子句至每一個指定 RANGE 或 ROWS 的視窗規格。
2
請確定包含 RANGE 的每個視窗規格,都有一個 sort-key-expression 在視窗 ORDER BY 子句中。
3
對於包含 RANGE 的每個視窗規格,請確定範圍值能由 視窗 ORDER BY 子句中的 sort-key-expression 中扣除, sort-key-expression 必須是數字類型或日期時間類型。 對於日期時間類型的 sort-key-expression,範圍值必須是特定日期時間的 DECIMAL 類型, 包含正確的精準度及小數位數。
4
確定任何使用 “BETWEEN”及“CURRENT ROW”的視窗規格有“UNBOUNDED PRECEDING”在“AND CURRENT ROW”前面,或有“UNBOUNDED FOLLOWING”在“CURRENT ROW AND”後面。

sqlcode:-20117

sqlstate:428EZ

SQL20118N 結構化類型 type-name 擁有的屬性數目超過所允許的屬性最大值。最大值為 max-value

解說

已超過結構化類型 type-name 的定義中每個結構化類型 所容許的最大屬性數目(包括原有屬性)。最大屬性數目(包括原有屬性)為 max-value

無法處理該陳述式。

使用者回應

請確定結構化類型的屬性數目未超過此限制。

sqlcode:-20118

sqlstate:54050

SQL20119N ROW 函數必須至少定義兩個直欄。

解說

在 RETURNS 子句中指定 ROW 的函數,其所包含的直欄清單必須至少有兩個直欄。

使用者回應

請移除 RETURNS 子句中的 ROW 關鍵字,使它成為純量函數,或在 RETURNS 子句的直欄清單中指定多重直欄。

sqlcode:-20119

sqlstate:428F0

SQL20120N SQL TABLE 函數必須傳回表格結果。

解說

在 RETURNS 子句中指定 TABLE 的 SQL 函數必須傳回為表格的結果。至於例外的純量全選, 則無法將純量表示式當作 SQL TABLE 函數的結果傳回。

使用者回應

請移除 RETURNS 子句中的 TABLE 關鍵字,使它成為純量函數,或在 TABLE 函數本體的 RETURN 陳述式中指定全選。

sqlcode:-20120

sqlstate:428F1

SQL20121N 只能對游標 cursor-name 指定 WITH RETURN 或 SCROLL 其中之一。

解說

對游標 cursor-name 指定了 WITH RETURN 及 SCROLL 兩者, 但這是不被接受的。

無法處理該陳述式。

使用者回應

請將 DECLARE CURSOR 陳述式變更為指定 NO SCROLL(或移除 SCROLL 關鍵字),或移除 WITH RETURN 子句。

sqlcode:-20121

sqlstate:428F3

SQL20123N 呼叫儲存程序 procedure 失敗,因為傳回給可捲動游標的結果集,沒有定位在第一列之前。

解說

呼叫儲存程序 procedure 的 CALL 指令傳回可捲動的結果集,並且這些游標中的一個以上的沒有定位在第一列之前。

呼叫儲存程序的 CALL 指令失敗。定義在儲存程序中的所有結果集游標在傳回呼叫程式之前,即已關閉。 可捲動的游標不能用來從結果集 FETCH(提取)。 因為在儲存程序執行結束時偵測到錯誤,所以沒有 Rollback 儲存程序所執行的動作,由儲存程序起始的所有外部動作都已完成。

使用者回應

請修改儲存程序的內容,以確定結果集游標在傳回呼叫程式之前,已定位在第一列之前。

sqlcode:-20123

sqlstate:560B1

SQL20128N 游標 cursor-name 是可捲動的,但是結果表格不能包括來自表格函數的輸出值。

解說

游標 cursor-name 已定義為可捲動的,但是結果表格包括來自表格函數的輸出值。不支援這種組合。

無法處理該陳述式。

使用者回應

請修改游標的定義,使它不可捲動,或者確定結果表格沒有包含來自表格函數的輸出值。

sqlcode:-20128

sqlstate:428F6

SQL20131N 在物件清單中,指定了一次以上類型為 object-type 的物件號碼 object-number

解說

在類型為 object-type 的物件名稱清單中,指定了多次號碼為 object-number 的物件。 無法在該物件上執行該陳述式作業超過一次。

使用者回應

請移除清單中重複出現的物件,已更正此問題。 (在 MDC 實例中,物件類型為 “dimension”。)

sqlcode:-20131

sqlstate:42713

SQL20133N 作業 operation-name 無法在外部常式 routine-name 上執行。該作業只能在 SQL 常式執行。

解說

您試圖於外部常式 常式名稱 執行作業 作業名稱。然而, 您只能在 SQL 常式上執行作業。此作業未能順利完成。

使用者回應

請確認您所提供的名稱定義一個 SQL 常式。

sqlcode:-20133

sqlstate:428F7

SQL20134N 常式 常式名稱 的 SQL 保存 (SAR) 檔案不能在伺服器建立。

解說

常式 routine-name 的 SQL 保存 (SAR) 檔案建立失敗,因為資料庫管理程式找不到指定常式的檔案庫或是連結檔案。連結檔案只在 SQL 常式以 DB2 版本 7.1,FixPak 2 或更新版本建立時可用。

使用者回應

以 DB2 版本 7.1,FixPak 2 或更新版本重建伺服器上的程序,並重試此作業。

sqlcode:-20134

sqlstate:55045

SQL20135N 指定的 SQL 保存不符合目標環境。 原因碼 = reason-code

解說

指定的 SQL 保存不符合目標環境,由於下列其中一項理由:
1
目標環境的作業系統與建立了 SQL 保存的作業系統不一樣。
2
目標環境的資料庫類型及層次與建立了 SQL 保存的資料庫類型及層次不一樣。

使用者回應

請確認建立了 SQL 保存的環境與目標環境符合,並重新發出指令。若環境不符合,您必須使用目標環境手動建立 SQL 常式。

sqlcode:-20135

sqlstate:55046

SQL20136N 常式 routine-name(特定名稱 specific-name)已嘗試存取聯合物件。

解說

外部函數或方法中的 SQL 陳述式試圖存取一個以上的聯合物件。此陳述式是從常式 routine-name(特定名稱 specific-name)來執行。目前尚不支援從外部函數或方法來存取聯合物件。

使用者回應

請從常式移除對聯合物件的參照。

sqlcode:-20136

sqlstate:55047

SQL20138N 因為常式 routine-name(特定名稱 specific-name)不是定義為 MODIFIES SQL DATA,所以不會解譯陳述式。

解說

常式 routine-name(特定名稱 specific-name)被定義為 CONTAINS SQL 或 READS SQL DATA, 並且試圖解譯 SQL 陳述式。 解譯 SQL 陳述式需要寫入解譯表格,但只有在 MODIFIES SQL DATA 常式中才容許這種作法。

使用者回應

請勿試圖從定義為 CONTAINS SQL 或 READS SQL DATA 的常式來解譯 SQL 陳述式。

sqlcode:-20138

sqlstate:42985

SQL20139N 因為前一個陳述式失敗或已岔斷,所以不會在常式 routine-name(特定名稱 specific-name)中發出 SQL 陳述式。

解說

在常式 routine-name(特定名稱 specific-name)或巢狀常式的執行期間, 陳述式失敗,並且需要 Rollback,或者發生岔斷。 從最外部陳述式呼叫的所有常式都必須完成執行,並且控制必須傳回給最外部陳述式,這樣資料庫管理程式才可以執行必需的回復作業。 直到完成此回復,才可發出 SQL 陳述式。

使用者回應

常式繼續執行。常式不應該進一步執行 SQL 陳述式,並且應儘快將控制傳回給呼叫陳述式。

一旦完成所有常式,資料庫管理程式就會自動回復岔斷起始失敗。

sqlcode:-20139

sqlstate:51038

SQL20140W 因為表格取消啟動了 VALUE COMPRESSION,所以忽略了 COMPRESS 直欄屬性。

解說

已發生下列其中一種狀況。
  1. 因為表格取消啟動了 VALUE COMPRESS,所以忽略了指定給直欄的 COMPRESS SYSTEM DEFAULT。
  2. 已指定 DEACTIVATED VALUE COMPRESSION,並且已使用 COMPRESS SYSTEM DEFAULT 來定義直欄。

使用者回應

若要允許將 COMPRESS 指定給直欄,請變更 (ALTER) 表格,並啟動表格的 VALUE COMPRESSION。

sqlcode:+20140

sqlstate:01648

SQL20142N 無法依指定的來使用順序 sequence-name

解說

sequence-name 被參照在無法使用它的環境定義中。sequence-name 是系統產生的順序。它是基於下列其中一種用途而產生的:

  • 身分直欄。
  • 使用隨機產生方法所產生之隨機配送表的配送索引鍵。

無法在 DROP SEQUENCE、GRANT 或 REVOKE 陳述式中,或在 NEXT VALUE 或 PREVIOUS VALUE 表示式中參照這些順序。

使用者回應

請在此環境定義中指定使用者定義順序物件的名稱。

sqlcode:-20142

sqlstate:428FB

SQL20143N 加密或解密功能失敗,因為未設定 ENCRYPTION PASSWORD 值。

解說

未設定 ENCRYPTION PASSWORD 值。

使用者回應

請發出 SET ENCRYPTION PASSWORD 陳述式以設定 ENCRYPTION PASSWORD 值。 密碼的長度必須是最小值 6 位元組,最大值 127 位元組。

sqlcode:-20143

sqlstate:51039

SQL20144N 加密密碼無效,因為指定的密碼長度小於 6 位元組或大於 127 位元組。

解說

必須使用 6 至 127 個位元組長度的密碼加密資料。

使用者回應

請確定密碼長度是在 6 到 127 之間。

sqlcode:-20144

sqlstate:428FC

SQL20145N 解密函數失敗。用來解密的密碼與用來加密資料的密碼不相符。

解說

解密資料所使用的密碼必須與用來加密資料的密碼相同。

使用者回應

請確定使用相同的密碼來加密與解密資料。

sqlcode:-20145

sqlstate:428FD

SQL20146N 解密函數失敗。未加密資料。

解說

資料必須是 ENCRYPT 函數的結果。

使用者回應

請確定資料類型是 ENCRYPT 函數的結果。

sqlcode:-20146

sqlstate:428FE

SQL20147N ENCRYPT 函數失敗。不支援多重傳送加密。

解說

已經加密過的資料不能重新加密。

使用者回應

請確定資料尚未加密。

sqlcode:-20147

sqlstate:55048

SQL20148N 具有特定名稱 specific-name 的常式 routine-name,必須讓 RETURN 陳述式作為複合主體的最後一個 SQL 陳述式。

解說

RETURN 陳述式必須是 SQL ROW 或 TABLE 函數中複合主體的最後一個 SQL 陳述式。 在常式主體中不容許任何其他的 RETURN 陳述式。

使用者回應

請確定只有一個 RETURN 陳述式,且是複合主體的最後一個 SQL 陳述式。

sqlcode:-20148

sqlstate:429BD

SQL20149W 已完成緩衝池作業, 但在重新啟動下一個資料庫之前不會生效。

解說

已順利建立或變更緩衝池,但是變更不會立即生效。重新啟動資料庫時,變更才會生效。

由於下列其中一個原因,已延遲這些變更:
  • 指定了 DEFERRED 選項。
  • 如果指定了變更,而且作業變更了 NUMBLOCKPAGES 或 BLOCKSIZE,則已延遲要求,因為恆會延遲所有這樣的變更。
  • 如果指定了變更、區塊型區域的先前變更尚未生效(未執行資料庫重新啟動),而且新的緩衝池建議大小又小於緩衝池區塊區域的現行大小,則必須延遲變更,以便在它生效時,區塊區域的變更也同時生效。

使用者回應

若要讓變更在下次資料庫重新啟動時生效,則不需要進一步的動作。

sqlcode:+20149

sqlstate:01649

SQL20150N 陳述式失敗,因為緩衝池的區塊頁數對於緩衝池大小來說過大。

解說

您可以使用區塊型緩衝池,來最佳化循序預先提取的效能。建立或變更緩衝池時,您可以使用 CREATE BUFFERPOOL 陳述式或 ALTER BUFFERPOOL 陳述式的 NUMBLOCKPAGES 子句,來指定應該存在於區塊型區域的頁數。

指定存在於區塊型區域的頁數不得超出緩衝池中總頁數的 98%。若嘗試將區塊型緩衝池中超過 98% 的頁數配置為存在於區塊型區域時,即會傳回此訊息。

使用者回應

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

  • 將 NUMBLOCKPAGES 設為零,對此緩衝池停用區塊型 I/O。
  • 減少指定存在於區塊型區域的頁數:
    1. 檢查 SYSCAT.BUFFERPOOLS 型錄視圖的 NPAGES 直欄,來判定此緩衝池的總頁數。
    2. 為 NUMBLOCKPAGES 指定一個不大於總頁數之 98% 的值。

sqlcode:-20150

sqlstate:54052

SQL20151N 為 BLOCKSIZE 指定的值不在有效範圍內。

解說

BLOCKSIZE 值的有效範圍為 2 至 256。

使用者回應

請將 BLOCKSIZE 的值變更為大於或等於 2 且小於或等於 256。最佳的值應為擴充大小。

sqlcode:-20151

sqlstate:54053

SQL20152N 指定的緩衝池目前不是區塊型的。

解說

使用 BLOCKSIZE 選項,但沒有指定要用在緩衝池的區塊區域中的頁數。

使用者回應

使用 BLOCKSIZE 選項時,同時指定 NUMBLOCKPAGES 值。

sqlcode:-20152

sqlstate:428FF

SQL20153N 資料庫的分割映像檔處於暫停狀態。

解說

當資料庫的分割映像是處於暫停狀態時,則無法使用。

使用者回應

若要回復這個資料庫分割映像檔的 I/O,請發出下列其中一個 db2inidb 指令:

  • db2inidb <db-name> as mirror
  • db2inidb <db-name> as snapshot
  • db2inidb <db-name> as standby

在 DB2 pureScale 環境中,您可以從任何成員發出這個指令,並且只需要發出此指令一次。

在分割的資料庫環境中,必須在每一個資料庫分割區上執行 db2inidb 指令。您可以並行在每一個資料庫分割區上執行指令。

sqlcode:-20153

sqlstate:55040

SQL20154N 不容許對視圖 view-name 執行所要求的插入或更新作業,因為無法判定橫列的目標表格。 原因碼 = reason-code

解說

指定的視圖包含 UNION ALL 查詢。reason-code 指出給定的橫列:

  1. 未滿足任何基礎基本表格的核對限制,或者
  2. 滿足多個基礎基本表格的所有核對限制。

聯合系統使用者:某一其他資料來源特定限制可能會防止插入橫列。

使用者回應

請確定要分割橫列集的基礎基本表格所使用的核對限制涵蓋了要插入的橫列集。 此外,也請確定對於利用它的全選的 UNION ALL 定義的視圖,如果更新要將某個基礎表格中的橫列移至另一個基礎表格,也請指定 WITH ROW MOVEMENT。 例如,給定核對限制 (T1.c1 in (1,2)) 予 T1,給定核對限制 (T2.c1 in (2,3)) 予 T2,並給定視圖 V1 作為 T1 與 T2 的聯集。

  1. 橫列 c1 = 4 不滿足任何一個基礎基本表格的核對限制,而
  2. 橫列 c1 = 2 則滿足兩個基礎基本表格的核對限制。

聯合系統使用者:如果原因不明,請從使要求失敗的資料來源中找出問題,並檢查該資料來源的物件定義及更新限制。

sqlcode:-20154

sqlstate:23513

SQL20155N 建立或啟動事件監視器失敗,因為指定的事件監視器目標表格無效。原因碼:reason-code

解說

原因碼可指出更具體的問題為何:

1

至少有一個直欄名稱與事件監視器資料元素 ID 不相配。

2

至少有一個直欄的資料類型與事件監視器資料元素 ID 的資料類型不相容。

3

至少有一個直欄名稱符合事件監視器資料元素 ID,但是在目標表格中不容許該元素。

4

表格的橫列大小對於表格空間的分頁大小而言過大。

5

缺少必要的直欄。

6

如果資料庫不是 Unicode 資料庫,則表格不能用 CCSID UNICODE 來宣告。

7

已分割表格。

8

指定用來儲存事件監視器輸出的表格名稱,已由另一個事件監視器所使用。

9

對於現行版本中不支援的邏輯資料群組,已存在事件監視器目標表格。

10

表格是直欄組織表格。

11

表格包括表示式型索引。

使用者回應

請檢查管理通知日誌,以獲得詳細資訊,並更正表格定義。

sqlcode:-20155

sqlstate:55049

SQL20156W 已順利啟動事件監視器,然而可能遺失了部分監視資訊。

解說

已順利啟動事件監視器,然而判定出事件監視器可能遺漏了部分資訊,原因為下列其中一項:

  • 直欄的資料類型比保留事件監視器元素 ID 所需要的資料類型小。此資料將被截斷。
  • 在 SYSCAT.EVENTTABLES 中找到目標表格,但是該表格不在資料庫中。 將不會記錄對應表格的所有監視器資訊。
  • 在 SYSCAT.EVENTTABLES 中找到目標表格,但是該表格不在所有資料庫分割區上。 將不會記錄某些分割區上的監視器資訊。
  • 寫入檔案的統計資料事件監視器的緩衝區大小太小,無法容納最大記錄。

使用者回應

請檢查管理通知日誌,以取得詳細資訊。如果這是統計資料事件監視器,請檢查緩衝區大小;如果太小,請重建緩衝區大小至少為 4 的事件監視器。若為其他類型的事件監視器,必要時請重建事件監視器,以建立所有目標表格。

sqlcode:+20156

sqlstate:01651

SQL20157N 授權 ID 為 authorization-ID 的使用者無法連接至靜止的實例,或連接至靜止的資料庫或處於下列靜止模式的已靜止實例中的資料庫:quiesce-mode

解說

指定的授權 ID 沒有權限可以連接至已靜止實例,或在實例處於 QUIESCE RESTRICTED ACCESS 模式時連接至已靜止實例中的資料庫。若要可以連接至實例或連接至資料庫,則授權 ID 必須滿足下列其中一個準則:

  • 擁有 SYSADM、SYSCTRL 或 SYSMAINT 權限
  • 為使用 QUIESCE INSTANCE 或 START DATABASE MANAGER 指令的 USER 選項(或者是 db2InstanceQuiesce 或 db2InstanceStart API)指定的使用者
  • 為使用 QUIESCE INSTANCE 或 START DATABASE MANAGER 指令的 GROUP 選項(或者是 db2InstanceQuiesce 或 db2InstanceStart API)指定的群組成員

如果靜止的資料庫處於 QUIESCE DATABASE 模式,則授權 ID 必須滿足上列其中一個準則,或者擁有 DBADM 權限或 QUIESCE_CONNECT 專用權,使用者才能順利連接至靜止的資料庫。

如果已靜止實例中的資料庫處於 QUIESCE INSTANCE 模式,則授權 ID 必須滿足上述其中一個準則,或者擁有 DBADM 權限,使用者才能順利連接至已靜止實例中的資料庫。

如果實例處於 QUIESCE INSTANCE 模式,則授權 ID 必須滿足上述其中一個準則,使用者才能順利連接至已靜止實例。

使用者回應

您可以採取下列其中一個動作,以順利連接至靜止的資料庫或已靜止實例中的資料庫,或是連接至已靜止實例:

  • 若要連接至資料庫,請等待資料庫解除靜止。
  • 若要連接至實例,或連接至實例中的資料庫,請等待實例解除靜止。
  • 使用具有足夠權限的授權 ID,以重試連接至資料庫,或連接至實例。

sqlcode:-20157

sqlstate:08004

SQL20158N 此 DB2 副本版本中,不支援 DB2 Data Links Manager。

解說

此 DB2 副本版本中,不支援 DB2 Data Links Manager,且已嘗試執行下列動作之一:

  • 為啟用 Data Links 的資料庫還原資料庫備份映像檔。
  • 升級使用 DATALINK 資料類型的資料庫。
  • 建立使用 DATALINK 資料類型的資料庫物件。使用 DATALINK 資料類型的資料庫物件包括表格、視圖、函數、方法、特殊類型及結構化資料類型。

使用者回應

請執行下列其中一個動作:

  • 在支援 Data Links 的前版次 DB2 副本中,RESTORE(還原)資料庫備份映像檔、停用 Data Links、備份資料庫,然後使用您要升級資料庫的目標 DB2 副本版本,重新發出 RESTORE DATABASE 指令。
  • 使用支援 Data Links 的前版次 DB2 副本,停用 Data Links,然後重新發出 UPGRADE DATABASE 指令。
  • 移除對 DATALINK 資料類型的所有參照,然後重新發出陳述式以建立資料庫物件。

sqlcode:-20158

sqlstate:42997

SQL20159W 因為陳述式環境定義而忽略隔離子句。

解說

在內含於複合陳述式(作為行內 SQL 處理)中的一個陳述式上指定了隔離子句。 該隔離子句被忽略,並且對複合陳述式中的所有陳述式都使用預設的隔離層次。

使用者回應

不需要任何回應。 請移除隔離子句,以防止此警告。

sqlcode:+20159

sqlstate:01652

SQL20160W 授權已授與使用者 userid。因為授權名稱大於 8 個位元組,所以未考慮到群組。

解說

授權名稱的長度大於 8 個位元組。 專用權會以授權名稱 userid 授與給使用者,而不考慮系統中名稱可能相符的已定義群組。繼續執行處理程序。

使用者回應

如果原來是要授與給使用者,則不需採取任何動作。 如果原來是要授與給群組,則請考慮選擇另一個群組, 因為不支援大於 8 個位元組的群組名稱。若要避免此警告訊息,請在授權名稱前指定 USER 關鍵字。

sqlcode:+20160

sqlstate:01653

SQL20161W 直欄名稱 column-name 不是事件監視表格的有效直欄。

解說

指定於 INCLUDES 或 EXCLUDES 子句中的直欄名稱與正在建立之事件監視器表格的任何有效直欄都不相符。

使用者回應

請檢查並更正指定的直欄名稱。

sqlcode:-20161

sqlstate:428AA

SQL20165N 不容許 FROM 子句內的 SQL 資料變更陳述式位在指定它的環境定義中。

解說

您可以在特定環境定義中的 FROM 子句中指定 SQL 資料變更陳述式。SQL 資料變更陳述式必須是FROM 子句中唯一用在下列的表格參照:
  • SELECT 陳述式的外部全選
  • SELECT INTO 陳述式
  • 共用表格表示式的外部全選
  • 指定陳述式中的唯一全選。

如果有任何輸入變數用在查詢的其他部分,則 FROM 子句中的多列 INSERT 不得包括 USING DESCRIPTOR 子句。FROM 子句中的多列 INSERT 陳述式無法指定 NOT ATOMIC。 XQuery 陳述式內的 SQL 全選內容不可在 FROM 子句中包括 SQL 資料變更陳述式。 廣域變數定義的預設子句中的 SQL 全選無法將 SQL 資料變更陳述式併入 FROM 子句中。

無法處理該陳述式。

使用者回應

請變更陳述式,以便 FROM 子句內的 SQL 資料變更陳述式用在支援的環境定義中,而且是 FROM 子句中唯一的表格參照。

sqlcode:-20165

sqlstate:428FL

SQL20166N SELECT 內的 SQL 資料變更陳述式指定了不是對稱視圖,或無法定義為對稱視圖的視圖 view-name

解說

SELECT 陳述式內的 SQL 資料變更陳述式的目標視圖必須利用 WITH CASCADED CHECK OPTION 來定義,或視圖定義中的全選(或參照視圖的視圖定義的全選)必須能夠使用 WITH CASCADED CHECK OPTION 來定義。

對稱視圖是隱含地或明確地利用 WITH CASCADED CHECK OPTION 來定義的視圖。

無法處理該陳述式。

使用者回應

請不要搭配指定的視圖使用 SELECT 內的 SQL 資料變更陳述式。

sqlcode:-20166

sqlstate:428FM

SQL20167N 共用記憶體集不夠大,無法處理要求。

解說

針對下列其中一個資源要求,共用記憶體集中的記憶體不足:
  • FCM 連線項目
  • FCM 訊息錨
  • FCM 要求區塊

使用者回應

請再試一次。如果錯誤持續,請停止並重新啟動實例,以使更大的共用記憶體集(DB2 會自動更新)生效,再重試該要求。

sqlcode:-20167

sqlstate:57011

SQL20168N ALTER BUFFERPOOL 陳述式目前正在處理中。

解說

如果 ALTER 作業已在處理中,則不能捨棄或變更緩衝池。

使用者回應

請等待 ALTER 作業完成。請使用 snapshot 監視器來檢查進行中的 ALTER 作業進度。

sqlcode:-20168

sqlstate:55051

SQL20169W 尚未啟動緩衝池。

解說

陳述式已順利執行,但是要等緩衝池啟動,才會生效。

使用者回應

陳述式已順利完成,並且將在資料庫啟動時生效。 這會在所有應用程式斷線後發生。為了使陳述式立即生效,請在啟動緩衝池時重新提交。 若要啟動緩衝池,在某些情況下可以使用 IMMEDIATE 選項來捨棄並重建緩衝池。

sqlcode:+20169

sqlstate:01654

SQL20170N 表格空間 tablespace-name 中沒有足夠的空間來執行所指定的動作。 原因碼 = reason-code

解說

您使用 DROP、REDUCE 及 RESIZE 儲存器動作的其中一或多項,從表格空間中移除空間,導致下列其中一種情況發生:
1
所移除的空間數量大於高臨界值的空間數量。
2
所移除的空間數量會導致表格空間擁有低於 5 個必要範圍。

使用者回應

1
請使用 snapshot 監視器來尋找表格空間中的可用頁數及表格空間臨界值標記。 這兩個值之間的差異為可移除的最大頁數。
2
請使用 snapshot 監視器來尋找表格空間中的可用頁數及表格空間範圍大小。 表格空間中的可用範圍數目,等於可用的頁數除以範圍大小。表格空間中的可用頁至少必須要有 5 個範圍。

sqlcode:-20170

sqlstate:57059

SQL20173W 已順利建立事件監視器,但是至少有一個事件監視器目標表格已存在。

解說

在建立事件監視器時,資料庫管理程式嘗試建立一個以上的目標表格,但發現使用那些名稱的表格已存在。 已順利建立事件監視器,但未建立目標表格來置換已存在的相同名稱的表格。 當事件監視器啟動時,它將試圖使用這些表格。 如果啟動處理程序判定這些表格不合適的話,事件監視器啟動可能會失敗。

使用者回應

請檢查管理通知日誌,以取得詳細資訊。如果必要的話,請捨棄所有目標表格,並重建事件監視器,以建立所有目標表格。

sqlcode:+20173

sqlstate:01655

SQL20178N 視圖 view-name 已定義 INSTEAD OF trigger 觸發程式。

解說

視圖 view-name 已為所指出的作業(UPDATE、DELETE 及 INSERT)定義 INSTEAD OF 觸發程式。 視圖上的每一個作業都只能定義一個 INSTEAD OF 觸發程式。

無法處理該陳述式。未建立 INSTEAD OF 觸發程式。

使用者回應

如果需要新的 INSTEAD OF 觸發程式,請捨棄現存的觸發程式,然後建立新觸發程式。

sqlcode:-20178

sqlstate:428FP

SQL20179N 由於視圖 view-name 的定義方式,而無法建立 INSTEAD OF 觸發程式。

解說

INSTEAD OF 觸發程式無法定義在:

  • 使用 WITH CHECK OPTION 定義的視圖
  • 已直接或間接定義這種視圖所在的視圖
  • 已直接或間接定義這種視圖所在的視圖
  • 參照非隔離暱稱並啟用「資料庫分割特性」的視圖

INSTEAD OF UPDATE 觸發程式無法定義在:

  • 在使用 WITH ROW MOVEMENT 子句定義的視圖中形成巢狀的視圖
  • 視圖可以是 INSTEAD OF 觸發程式的目標視圖,或是直接或間接相依於觸發程式目標視圖的視圖。
  • 無法處理該陳述式。未建立 INSTEAD OF 觸發程式。

使用者回應

  • 如果使用 WITH CHECK OPTION 定義視圖,請移除 WITH CHECK OPTION 子句。
  • 如果視圖是在使用 WITH ROW MOVEMENT 子句定義的視圖中形成巢狀,請移除 WITH ROW MOVEMENT 子句。
  • 如果視圖參照非隔離暱稱,請指定不同的視圖。

sqlcode:-20179

sqlstate:428FQ

SQL20180N 無法如指定變更表格 table-name 中的直欄 column-name

解說

由於下列其中一個原因,無法變更直欄 column-name

  • 如果表格定義為歷程表,則無法在 ALTER TABLE 上指定 ADD COLUMN。
  • 如果表格定義為歷程表,則無法在 ALTER TABLE 上指定 ALTER COLUMN。
  • 無法對歷程表的直欄,在 ALTER TABLE 上指定搭配 SET GENERATED 的 ALTER COLUMN。
  • 無法對已是產生的直欄或具有所定義預設值的直欄,在 ALTER TABLE 上指定搭配 SET GENERATED AS 的 ALTER COLUMN。
  • 如果表格定義為歷程表,則無法在 ALTER TABLE 上指定 DROP COLUMN。
  • 無法對定義為 BUSINESS_TIME 期間一部分的直欄,在 ALTER TABLE 上指定搭配 DROP NOT NULL 的 DROP COLUMN。
  • 無法對定義為系統期間時間表格上的 row-begin 或 row-end 的直欄,在 ALTER TABLE 上指定搭配 DROP GENERATED 的 DROP COLUMN。
  • 對於使用隨機產生方法所產生之隨機配送表的隨機配送索引鍵直欄,無法在 ALTER TABLE 上指定搭配 DROP GENERATED、SET NOT HIDDEN 或 SET IMPLICITLY HIDDEN 的 ALTER COLUMN。

無法處理該陳述式。

使用者回應

將直欄的名稱變更為可以變更或捨棄的直欄,然後以必要的屬性重建表格。

sqlcode:-20180

sqlstate:428FR

SQL20183N 表格 table-name 與所指定的表格分割作業不相容。

解說

表格 table-name 的分割子句無效,因為:

在 ALTER TABLE 陳述式、CREATE INDEX 陳述式或 CREATE TABLE 陳述式上指定了 ADD PARTITION BY,但是該表格已經是分割表格。

在 ALTER TABLE 陳述式上指定了 ADD PARTITION、ALTER PARTITION、DROP PARTITION 或 DROP DISTRIBUTION,但是該表格不是分割表格、該表格是具體化的查詢表格,或是該表格上定義了具體化的查詢表格。

在 ALTER TABLE 陳述式上為 HASH 分割區指定了 ADD PARTITION,但是該表格並沒有用雜湊作業來分割。

在 ALTER TABLE 陳述式上指定了資料分割區的 DROP PARTITION,但是使用了 PRESERVE ROWS 子句。PRESERVE ROWS 子句僅對具有雜湊分割的分割表格而言有效。

使用者回應

將陳述式變更為有效的陳述式,或是指定其他表格,並重新發出陳述式。

sqlcode: -20183

sqlstate: 428FT

SQL20188N name 所識別的主要索引鍵或唯一鍵是 ORGANIZE BY 子句中之直欄的子集。

解說

主要索引鍵或唯一鍵中的全部直欄都包括在表格的 ORGANIZE BY 子句中。 這不被容許,因為表格中頁面的每一個區塊都只會包含一個橫列,這樣就會浪費區塊中所有剩餘的空間。

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

無法處理該陳述式。

使用者回應

如果可能,請修改主要索引鍵或唯一鍵定義、唯一索引定義或 ORGANIZE BY 子句,使鍵值不是維度的子集。

sqlcode:-20188

sqlstate:429BE

SQL20189W 由於記憶體不足,要等到下次資料庫啟動,緩衝池作業 (CREATE/ALTER) 才會生效。

解說

CREATE 或 ALTER BUFFERPOOL 陳述式已發出並已順利完成,但是由於記憶體不足,建立/變更延遲執行。 在下次資料庫啟動時,變更才會生效。

使用者回應

如果您不想等到下次啟動時才啟動緩衝池或調整緩衝池大小,您可以釋放記憶體資源並重試(使用相同或不同的大小)。 可減少的記憶體資源包括其他緩衝池、資料庫資料堆、目錄快取、套件快取以及公用程式資料堆。 可根據資源來使用 ALTER/DROP BUFFERPOOL 或 UPDATE DATABASE CONFIGURATION 指令,減少這些資源。 往後,若要為緩衝池記憶體的動態配置保留額外記憶體,您可增加 DATABASE_MEMORY 資料庫配置參數。

如果不重試:
  1. 如果它是失敗的 ALTER BUFFERPOOL,則將使用緩衝池的現行執行時間大小來繼續執行。 您可使用資料庫監視器來查看緩衝池的現行執行時間大小。
  2. 如果它是失敗的 CREATE BUFFERPOOL,則在緩衝池中建立的任何表格空間都會暫時(直到下次啟動)放置在具有符合分頁大小的隱藏緩衝池中。 因為隱藏緩衝池很小,所以這可能導致效能要比期望值低。
若要重試:
  1. 若為 ALTER BUFFERPOOL,請重新提交指令。
  2. 若為 CREATE BUFFERPOOL,請捨棄緩衝池,然後重新提交指令。

sqlcode:+20189

sqlstate:01657

SQL20190N 因為潛伏的資料不一致,所以無法編譯聯合插入、更新或刪除作業。

解說

當資料來源未提供應用程式儲存點支援,且伺服器選項 iud_app_svpt_enforce 設為 Y 時, 在前置編譯期間,聯合插入、更新或刪除作業將會區塊傳輸。 這樣可以防止潛伏的資料不一致(如果在聯合插入、更新或刪除處理程序期間發生錯誤,就會在執行時發生資料不一致的狀況)。

使用者回應

可能的解決方案包括:
  • 將伺服器選項 iud_app_svpt_enforce 變更為 N。
  • 將插入、更新或刪除直接套用在資料來源上。

sqlcode:-20190

sqlstate:0A503

SQL20191N 對於在動態準備的 CALL 陳述式中的 INOUT 參數,必須在 USING 與 INTO 子句中使用相同的主變數。

解說

在 CALL 陳述式中,INOUT 參數必須對應單一主變數。 當執行動態準備的 CALL 陳述式時,必須在 EXECUTE 陳述式的 USING 與 INTO 子句中指定相同的主變數。

使用者回應

為 INOUT 參數指定與參數記號對應的主變數時,請在 EXECUTE 陳述式的 USING 與 INTO 子句中使用相同的主變數。 使用 SQLDA 來為 INOUT 參數指定與參數記號對應的主變數時,對應之 SQLVAR 的 SQLDATA 指標必須指向相同的主變數。

sqlcode:-20191

sqlstate:560BB

SQL20192N 只有在分割的資料庫環境中才會支援所指定的模式。

解說

在分割的資料庫環境中未呼叫 RECOMMEND PARTITIONINGS 或 EVALUATE PARTITIONINGS。 只有在分割的資料庫環境中才會支援這兩種模式。

使用者回應

請在分割的資料庫環境中呼叫 RECOMMEND PARTITIONINGS 或 EVALUATE PARTITIONINGS。

sqlcode:-20192

sqlstate:56038

SQL20193N 存取檔案 file-name 時發生錯誤。 原因碼:reason-code

解說

試圖存取伺服器上的 file-name 檔案,但發生錯誤。若為原因碼 4 至 10,file-name 可能位於 DB2_UTIL_MSGPATH 登錄變數所指定的目錄中,或其所在目錄可能是實例的 tmp 目錄。所發現的指定錯誤由原因碼來指出,如下所示:
1
檔案格式錯誤。
2
通訊錯誤。
3
記憶體配置錯誤。
4
DB2_UTIL_MSGPATH 登錄變數所指示的目錄路徑不存在。
5
檔案不存在。
6
隔離的使用者 ID 無法建立檔案(不具有對目錄的執行權)。
7
隔離的使用者 ID 無法讀取檔案(不具有讀取權)。
8
隔離的使用者 ID 無法寫入檔案(不具有寫入權)。
9
磁碟空間不足(磁碟已滿)。
10
無法移除檔案。

使用者回應

使用原因碼資訊來判定如何讓檔案可供存取,然後重新提交陳述式。

sqlcode:-20193

sqlstate:560BC

SQL20194N 緩衝池 bufferpool-name 不存在於資料庫分割區 dbpartitionnum 上。

解說

ALTER BUFFERPOOL 陳述式正在指定緩衝池 bufferpool-name, 但該緩衝池不在資料庫分割區 dbpartitionnum 上。

使用者回應

使用 ALTER DATABASE PARTITION GROUP 陳述式,將資料庫分割區 dbpartitionnum 新增到已為它定義緩衝池 bufferpool-name 的資料庫分割區群組。 如果緩衝池尚未與任何特定的資料庫分割區群組產生關聯,請將資料庫分割區新增到任何資料庫分割區群組,或為此資料庫分割區建立一個新的資料庫分割區群組。 再次發出 ALTER BUFFERPOOL 陳述式。

sqlcode:-20194

sqlstate:53040

SQL20195N 在處理路徑重新命名配置檔 config-file 中的行號 line-number 時發生錯誤。原因碼 = reason-code

解說

在現行損毀或 Roll-Forward 回復處理程序期間,會使用路徑重新命名配置檔 config-file 來重新命名儲存器。 然而,在處理此檔案中的陳述式時,在第 line-number 行發生錯誤,阻止了回復處理進行。 下列原因碼指出了錯誤的說明:

  1. 無效的語法。
  2. 儲存器路徑的長度超出儲存器路徑長度所容許的最大值。
  3. 所指定的儲存器路徑已列示在前一行上。
  4. 資料庫路徑的長度超出資料庫路徑長度所容許的最大值。
  5. 所指定的資料庫路徑已列示於前一行上。
  6. 資料庫路徑必須為絕對路徑。
  7. 資料庫路徑指定錯誤。
  8. 萬用字元 ("*") 用法錯誤。

使用者回應

如下列說明所述,對配置檔進行相對應的變更,並重新發出指令:

  1. 更正語法錯誤。
  2. 指定較短的儲存器路徑。
  3. 從檔案中移除重複的儲存器路徑。
  4. 指定一個較短的資料庫路徑。
  5. 從檔案中移除重複的資料庫路徑。
  6. 使用絕對資料庫路徑,不要使用相對資料庫路徑。
  7. 以磁碟機字母後加上冒號的格式(例如 C:)來指定資料庫路徑。
  8. 如果使用萬用字元,則必須是新舊路徑中的最後一個字元。

sqlcode:-20195

sqlstate:08504

SQL20196N 從 FROM SQL 函數或方法傳回的一個以上的內建類型,與作為 TO SQL 函數或方法之參數的對應內建類型不相配。

解說

由 FROM SQL 轉換函數或方法傳回的內建類型,必須與對應之 TO SQL 轉換函數或方法的參數清單中的類型相配。

使用者回應

選擇其他的 FROM SQL 轉換函數或方法,或 TO SQL 轉換函數或方法,或是變更 FROM SQL 轉換函數或方法,或 TO SQL 轉換函數或方法,以確定從 FROM SQL 函數或方法傳回的每一個內建類型, 都與作為 TO SQL 轉換函數或方法之參數的對應類型相配。

sqlcode:-20196

sqlstate:428FU

SQL20197N 無法將 method-name 定義為置換方法。原因碼 reason-code

解說

試圖將 method-name 定義為置換方法。因為下列其中一個原因(由 reason-code 指定), 無法建立此方法與原始方法之間的置換關係:
1
找不到相同名稱的原始方法。
2
原始方法與置換方法的參數個數不相同。
3
置換方法之參數的資料類型與原始方法的對應參數資料類型不相配。
4
置換方法之參數的參數名稱與原始方法之對應參數的參數名稱不相配。
5
置換方法之參數的定位器指示與原始方法之對應參數的定位器指示不相配。
6
置換方法之參數的 FOR BIT DATA 指示與原始方法之對應參數的 FOR BIT DATA 指示不相配。
7
置換方法的 RETURNS 子句內含 AS LOCATOR 子句、CAST FROM 子句或 FOR BIT DATA 子句。
8
指定了下列其中一個繼承的方法屬性:SELF AS RESULT、SQL 常式性質或外部常式性質。
9
置換方法的傳回類型與原始方法的傳回類型不相配。
10
置換方法的傳回類型是結構化類型,它不是下列類型的次類型:
  • 原始方法的傳回類型或
  • 已置換原始方法之所有方法的每一個傳回類型。

使用者回應

請依據 reason-code 所指定的原因,來修改方法定義,如下所示:
1
使用方法名稱,該名稱要能識別結構化類型之超類型的現存方法。
2
為置換方法定義與原始方法相同個數的參數。
3
變更資料類型,使之與原始方法之對應參數的資料類型相配。
4
變更參數名稱,使之與原始方法之對應參數的名稱相配。
5
變更定位器指示,使之與原始方法之對應參數的定位器指示相配。
6
變更 FOR BIT DATA 指示,使之與原始方法之對應參數的 FOR BIT DATA 指示相配。
7
移除置換方法的 AS LOCATOR 子句、CAST FROM 子句及 FOR BIT DATA 子句。
8
移除 SELF AS RESULT 方法屬性以及任何 SQL 常式屬性或外部常式屬性。
9
變更傳回類型,使之與原始方法的傳回類型相配。
10
變更傳回類型,使之成為原始方法和所有已置換原始方法之方法的次類型。

sqlcode:-20197

sqlstate:428FV

SQL20198N 方法 method-name 遞迴呼叫自己。

解說

有一個方法試圖遞迴呼叫自己。遞迴本質上可能是直接或間接的。

使用者回應

請修改方法定義。

sqlcode:-20198

sqlstate:55054

SQL20199N tbspace-id 中,表格 table-id 的索引 index-id 的索引擴充所使用的索引鍵轉換表格函數產生了重複列。

解說

索引 index-id 使用之索引擴充的 GENERATE USING 子句, 其所指定的按鍵轉換表格函數產生了複製列。對呼叫按鍵轉換表格函數而言, 不應該產生任何複製列。當在表格空間 tbspace-id 中為表格 table-id 的索引 index-id 插入或更新索引鍵值時,發生這個錯誤。

無法處理該陳述式。

使用者回應

必須為索引 index-id 之索引擴充使用的按鍵轉換表格函數修改程式碼, 使其避免產生複製列。

若要判斷索引名稱,請使用下列查詢:
SELECT IID, INDSCHEMA, INDNAME
    FROM SYSCAT.INDEXES AS I,
              SYSCAT.TABLES AS T
       WHERE IID = <index-id>
                 AND TABLEID = <table-id>
                 AND TBSPACEID = <tbspace-id>
                 AND T.TBASCHEMA = I.TABSCHEMA
                 AND T.TABNAME = I.TABNAME

sqlcode:-20199

sqlstate:22526

SQL20200N jar-id 的安裝或取代失敗,因為找不到 url

解說

安裝或置換 jar 程序中指定的 URL 無法識別有效 jar 檔案。

使用者回應

利用可識別有效的 jar 檔案的 URL,重新發出安裝或置換 jar 程序。

sqlcode:-20200

sqlstate:46001

SQL20201N jar-id 的安裝、置換或移除失敗,因為 jar 名稱無效。

解說

在安裝、置換或移除 jar 程序中指定的 jar 名稱是無效的。例如,jar id 可能含有不正確的格式、可能不存在而無法被置換或移除,或因為它已經存在而無法安裝。

使用者回應

請確定 jar id 含有正確的格式。若 jar id 存在,在可以安裝之前,需要先移除它。若是移除或置換程序,請確定 jar id 是存在的。

sqlcode:-20201

sqlstate:46002

SQL20202N 取代或移除 jar-id 失敗,因為常式 routine-name(特定名稱 specific-name)正在使用 class

解說

jar 檔案中指定的類別目前正由已定義的程序使用中,或置換 jar 檔案不包含定義程序的指定類別。

使用者回應

請確定參照要被移除之類別的所有程序,皆已捨棄且重新提交置換或移除程序。

sqlcode:-20202

sqlstate:46003

SQL20203N 使用者定義函數或程序 function-name 所使用的 Java 方法具有無效的標記。

解說

用來實作函數或程序的 java 方法的標記是無效的。例如,此方法可能具有無法對映至相對應 CREATE 陳述式的參數,或程序的此方法可能會指定回覆值。

使用者回應

重新發出相對應的 CREATE 陳述式,指定符合 Java 方法的參數,或更正 Java 方法的參數或傳回類型並重建類別。

sqlcode:-20203

sqlstate:46007

SQL20204N 使用者定義函數或程序 function-name 無法對映至單一 Java 方法。

解說

識別的函數或程序找不到符合的 Java 方法,或找到一個以上的符合 Java 方法。

使用者回應

更正 Java 方法或相對應的 CREATE 陳述式,使函數或程序呼叫解析至單一 Java 方法。

sqlcode:-20204

sqlstate:46008

SQL20205N 使用者定義函數或程序 function-name 的輸入引數含有空值,而無法傳遞至該方法。

解說

以 "CALLED ON NULL INPUT" 或程序建立的函數含有具有空值的輸入參數,但是此引數的 Java 資料類型不支援空值。 不支援空值的 Java 資料類型的範例有:BOOLEAN、BYTE、SHORT、INT、LONG 或 DOUBLE。

使用者回應

若要利用空值來呼叫方法,請確定輸入 Java 類型可以接受空值。 就函數而言,函數也可以用 "RETURNS NULL ON NULL INPUT" 來加以建立。

sqlcode:-20205

sqlstate:39004

SQL20206W 程序 function-name 傳回太多結果集。

解說

指定的程序所傳回的結果集比 CREATE PROCEDURE 陳述式中指定的結果集多。

使用者回應

修改程序以傳回較少的結果集,或捨棄並重新建立指定結果集正確數目的程序。

sqlcode:+20206

sqlstate:0100E

SQL20207N jar-id 的安裝或移除 jar 程序指定了部署描述子的用法。

解說

安裝或置換 jar 程序的 DEPLOY 或 UNDEPLOY 參數為非零值;此參數不被支援且必須為零。

使用者回應

重新發出已設為零的 DEPLOY 或 UNDEPLOY 參數的程序。

sqlcode:-20207

sqlstate:46501

SQL20208N 未建立表格 table-name。原因碼:reason-code

解說

無法建立此表格,因為它違反下列原因碼所指示的限制:

1

用來定義暫置表格的表格不是使用 REFRESH DEFERRED 選項所定義的具體化查詢表格。

2

用來定義暫置表格的具體化查詢表格已有與其相關聯的暫置表格。

3

如果 CREATE TABLE 陳述式是從非型錄資料庫分割區發出的, 則無法建立參照暱稱的具體化查詢表格。

4

無法建立參照受保護的表格的具體化查詢表格、依賴受保護的表格的視圖,或不容許快取的暱稱。

5

安全原則無法新增至具體化查詢表格或暫置表格。

6

具體化查詢表格不能具有多個 DB2SECURITYLABEL 直欄,且該直欄不應覆蓋在任何函數中。

7

無法建立參照受保護且具有多個 DB2SECURITYLABEL 直欄之表格的具體化查詢表格。

8

如果參照的基本表格具有 DB2SECURITYLABEL 直欄,則直欄必須出現在查詢的全選中。

9

當變更表格 tableA,以變成具體化查詢表格時,如果查詢的全選中的直欄屬於類型 DB2SECURITYLABEL,則 tableA 的相對應直欄也必須屬於類型 DB2SECURITYLABEL。

10

無法對備用表格建立暫置表格。

使用者回應

請依下列原因碼來回應:

1

指定使用 REFRESH DEFERRED 選項所建立的具體化查詢表格,來定義暫置表格。

2

指定與暫置表格沒有關聯的具體化查詢表格。

3

從型錄資料庫分割區發出 CREATE TABLE 陳述式。

4

更正 CREATE TABLE 陳述式中所指定的全選,使它不要違反原因碼 4 下說明所述的任何限制。

5

移除 CREATE TABLE 陳述式的 SECURITY POLICY 子句

6

參照具有最多一個 DB2SECURITYLABEL 直欄的受保護表格,且該直欄不應該覆蓋在函數中。

7

具體化查詢表格應該具有最多一個 DB2SECURITYLABEL 直欄。

8

針對具體化查詢表格,選取與基本表格中所參照相同的 DB2SECURITYLABEL 直欄。

9

若要變更表格 tableA,以變成具體化查詢表格,請定義全選,以便全選中的任何 DB2SECURITYLABEL 直欄對應於 tableA 中屬於類型 DB2SECURITYLABEL 的直欄。

10

不需要任何動作。 無法在備用表格上建立暫置表格。

sqlcode:-20208

sqlstate:428FG

SQL20209N option-type 選項對於表格 table-name 而言無效,原因碼為 reason-code

解說

指定的選項無效,原因如下列原因碼所示:

1

無法在處於「設定完整性擱置無存取」狀態的表格上指定 READ ACCESS 選項。

2

若表格仍然有未檢查的完整性類型,則 FULL ACCESS 選項無效。

3

FULL ACCESS 選項僅在處於「正常無資料移動」狀態的表格或分離表格上才有效。

4

如果表格處於「正常無資料移動」狀態,則無法指定具有 IMMEDIATE UNCHECKED 選項的 FULL ACCESS 選項。

5

在不是暫置表格的表格上,PRUNE 選項無效。

6

不能同時指定 PRUNE 及 INCREMENTAL 選項。

7

如果表格由於涉及資料分割作業而需要檢查完整性,則無法搭配 IMMEDIATE UNCHECKED 選項來指定 ALL 選項。

8

如果表格的資料庫分割鍵、表格分割鍵、多維叢集鍵或範圍叢集鍵參照一個產生的直欄(已透過 ALTER TABLE 陳述式變更其表示式),則無法搭配 IMMEDIATE UNCHECKED 選項來指定 ALL 或 GENERATED COLUMN 選項。

9

在將要為所有橫列產生其身分直欄值的表格上,要完全重新整理的具體化查詢表格,以及已經載入並將計算其已產生直欄值或身分直欄值的表格上,不可指定 ALLOW READ ACCESS 選項及 ALLOW WRITE ACCESS 選項。

10

僅可在 REFRESH DEFERRED 具體化查詢表格上指定 ALLOW QUERY OPTIMIZATION USING REFRESH DEFERRED TABLES 選項。

11

在以文字維護的摘要表格上,選項無效。

12

在以文字維護的暫置表格上,選項無效。

13

當 SET INTEGRITY 陳述式具有多個目標表格,且其中一個目標表格是同時具有連接的資料分割區及未分割的使用者索引,則無法與 IMMEDIATE UNCHECKED 選項一起指定 ALL 選項。

14

如果指定的表格是系統期間時間表格,則不能在 SET INTEGRITY 陳述式中指定 GENERATE IDENTITY 選項。

15

如果表格是系統期間時間表格,則無法指定 FORCE GENERATED 選項。

16

如果表格是系統期間時間表格,則無法指定 FOR EXCEPTION 子句。

使用者回應

1

請勿指定 READ ACCESS 選項。

2

搭配 IMMEDIATE CHECKED 選項使用 FULL ACCESS 選項,或搭配 IMMEDIATE UNCHECKED 選項指定 ALL 作為完整性選項。

3

使用帶有 IMMEDIATE CHECKED 選項的 FULL ACCESS 選項。

4

使用無 IMMEDIATE UNCHECKED 選項的 FULL ACCESS 選項。

5

從陳述式中移除不是暫置表格的表格。

6

僅指定 PRUNE 或 INCREMENTAL 其中之一。

7

不是指定 ALL 選項,而是直接指定要使用 IMMEDIATE UNCHECKED 選項來取消勾選那些完整性選項。然後搭配 IMMEDIATE CHECKED 選項發出另一 SET INTEGRITY 陳述式,以檢查表格的資料分割完整性。

8

在要使用 IMMEDIATE UNCHECKED 選項來免查核的那些完整性選項中,省略 ALL 或 GENERATED COLUMN 選項。然後搭配 IMMEDIATE CHECKED 及 FORCE GENERATED 選項發出另一 SET INTEGRITY 陳述式,以根據新的表示式重新計算所產生的直欄值。如果可保證表格中的資料可以滿足新產生的直欄表示式,則可省略 FORCE GENERATED 選項。

9

在表格上指定 ALLOW NO ACCESS 選項。

10

移除 ALLOW QUERY OPTIMIZATION USING REFRESH DEFERRED TABLES 選項。

11

從陳述式移除以文字維護的摘要表格。

12

從陳述式移除以文字維護的暫置表格,或者指定 IMMEDIATE CHECKED 選項。

13

以支援的選項及目標表格組合,重新發出 SET INTEGRITY 陳述式。例如,在僅將受影響的分割表格指定為目標時,搭配 ALL 及 IMMEDIATE UNCHECKED 選項發出 SET INTEGRITY 陳述式;或者改為搭配 IMMEDIATE CHECKED 選項及多個目標表格,以發出 SET INTEGRITY 陳述式。

14

針對系統期間時間表格指定 NOT INCREMENTAL 選項時,請省略 GENERATE IDENTITY 選項。

15

如果表格是系統期間時間表格,請移除 FORCE GENERATED 選項。

16

如果表格是系統期間時間表格,請移除 FOR EXCEPTION 子句。

sqlcode:-20209

sqlstate:428FH

SQL20211N 指定內容 ORDER BY、OFFSET 或 FETCH 子句無效。

解說

ORDER BY、OFFSET 或 FETCH 子句不允許在:

  • 外部全選視圖
  • SQL Table 函數的 RETURN 陳述式中的外部全選
  • 實體化的查詢表格定義
  • 沒有用括弧來含括的次選取

使用者回應

情況為:

次選取

將包括 ORDER BY、OFFSET 或 FETCH 子句的次選取含括在括弧中。

OFFSET 或 FETCH 子句

在 WHERE 子句中使用 ROW_NUMBER() OVER() 子句與述詞。 下列範例相等於 SELECT NAME FROM emp OFFSET 3 ROWS FETCH NEXT 6 ROWS ONLY:

SELECT name FROM
    (SELECT
          ROW_NUMBER() OVER() AS m, name
          FROM emp
    ) AS e
WHERE m > 3 AND m < 10

請注意,LIMIT 是 FETCH 子句的替代語法。

ORDER BY 子句

在使用視圖、具體化查詢表格或 SQL 表格函數的查詢中,使用 ORDER BY。

sqlcode:-20211

sqlstate:428FJ

SQL20212N 嘗試從 JAR JAR-name 載入 Java 類別 class-name 時,使用者定義的常式 function-name 發生異常狀況。原始異常狀況 underlying-exception

解說

發生 ClassNotFoundException。ClassNotFoundException 可以參照原始 Java 異常狀況,它會進一步說明為什麼找不到類別。 例如,基本的異常狀況可能是在嘗試讀取 JAR 檔案時發生的 I/O 錯誤,或是從資料參考檔中讀取 JAR 時發生的 SQL 錯誤。 將會視情況傳回符合 SQLCA 限制之適當數量的與下列記號。

function-name 可識別執行時發生 ClassNotFoundException 之外部 Java 函數或程序的特定名稱。

class-name 可識別找不到其定義的 Java 類別。

JAR-name 會選擇性地識別所安裝的 JAR(預期含有已識別的類別)。除非將外部 Java 函數或程序定義在所安裝 JAR 中,否則就會呈現「(無)」。

underlying-exception 會選擇性地包含基礎異常狀況的 toString(),該異常狀況會導致此 ClassNotFoundException(若有的話)。如果沒有基礎異常狀況,則會呈現「(無)」。

使用者回應

請執行 ALTER PROCEDURE 來指定要在哪裡尋找類別,確定類別位於所指定的 JAR 或系統類別路徑中,或是更正 underlying-exception 所報告的狀況。

sqlcode:-20212

sqlstate:46103

SQL20223N 加密或解密作業失敗,因為未安裝加密機能,或加密機能未正確地作用。

解說

您可以使用內建加密函數,來加密資料庫表格中的資料。您可以使用加密鑑別,來加密 DB2 用戶端與資料庫伺服器之間的傳輸中資料。

如果嘗試加密或解密儲存中的資料或傳輸中的資料,但是無法使用加密機能來提供加密或解密要求的服務,則會傳回此訊息。

使用者回應

若要使用加密機能,請執行下列疑難排解步驟:

  1. 驗證已透過發出 db2ls 指令安裝加密機能。
  2. 如果未安裝加密機能,請先安裝它,再使用加密或解密作業。
  3. 如果加密機能已安裝但未正確地運作,則請解除安裝後再重新安裝加密機能。

sqlcode:-20223

sqlstate:560BF

SQL20225W 因為緩衝池在使用中,直到下次資料庫啟動時,緩衝池作業 (DROP) 才會生效。

解說

已發出並順利完成 DROP BUFFERPOOL 陳述式, 但是有一個表格空間仍然在使用此緩衝池。 即使表格空間可以重新指派給不同的緩衝池, 但表格空間的重新指派要在下次資料庫重新啟動時才會生效。 如果有問題的表格空間在此作業確定前捨棄了, 則此緩衝池將會在那時從記憶體中移除。直到下次資料庫重新啟動,此緩衝池可能仍會在記憶體中,且任何其他要重覆使用此緩衝池 ID 的儲存池之建立 (CREATE) 或變更 (ALTER) 可能會被延遲。

使用者回應

請重新啟動資料庫,以將緩衝池從記憶體刪除。

sqlcode:20225

sqlstate:01657

SQL20227N 必要的子句遺漏了 expression 的引數 number

解說

expression 表示式要求指定子句的引數號碼 number。 如果 expression 為 XMLATTRIBUTES,則 XML 屬性名稱需要 AS 子句。 如果 expression 為 XMLFOREST,則 XML 元素名稱需要 AS 子句。 無法處理該陳述式。

使用者回應

藉由為必要子句提供引數來更正陳述式。

sqlcode:-20227

sqlstate:42633

SQL20230N 程序名稱不可以由 CALL 陳述式中的主變數來指定,且引數不可以用 USING DESCRIPTOR 子句來指定。

解說

程序名稱必須指定為 CALL 陳述式中的一個 ID,且引數必須明確地提供。主變數不可用於程序名稱。USING DESCRIPTOR 子句不可用來指定引數。

使用者回應

必須重新撰寫 CALL 陳述式,提供一個 ID 給程序名稱, 並明確地列出引數。如果要到執行時間才知道程序名稱或引數,則使用動態準備的 CALL 陳述式。

對於從 V8 之前的版次移轉過來的應用程式, 在重新撰寫應用程式以使用動態準備的 CALL 陳述式之前, 可以使用 CALL_RESOLUTION DEFERRED 前置編譯選項。

sqlcode:-20230

sqlstate:42601

SQL20238N 表格 table-name 已定義為 CCSID UNICODE,且不可用於 SQL 函數或 SQL 方法中。

解說

在非 Unicode 資料庫中,僅 ASCII 編碼方法的表格才可以在 SQL 函數或 SQL 方法中被參考到。 因為表格 table-name 已定義為 CCSID UNICODE,所以不可用於 SQL 函數或 SQL 方法中。

使用者回應

請勿在 SQL 函數或 SQL 方法中使用 CCSID UNICODE 表格。

sqlcode:-20238

sqlstate:560C0

SQL20239N 以 Unicode 編碼方法所建立的表格,無法成為類型化表格,也無法包含圖形類型、XML 類型或使用者定義類型。

解說

在非 Unicode 資料庫中,以 Unicode 編碼方法所建立的表格不可以是類型化表格,也不可以包含任何圖形類型、XML 類型或使用者定義類型所定義的直欄。

使用者回應

請從表格定義中移除 CCSID UNICODE 子句,或從表格定義中移除圖形類型、XML 類型或使用者定義類型。

sqlcode:-20239

sqlstate:560C1

SQL20240N 類型 DB2SECURITYLABEL 之直欄 column-name 的規格無效。原因碼:reason-code

解說

就類型 DB2SECURITYLABEL 的直欄而言,CREATE TABLE 或 ALTER TABLE 陳述式的屬性規格可能會因為下列原因而無效。

4

無法為建立的暫存表格或宣告的暫存表格定義安全標籤直欄。

10

類型 DB2SECURITYLABEL 的直欄無法定義為產生的直欄。

使用者回應

更正類型 DB2SECURITYLABEL 直欄的規格,然後重新提交此陳述式。

sqlcode:-20240

sqlstate:42963

SQL20241N 為捨棄的表格 table-name 寫入一個歷程檔案項目失敗。

解說

在捨棄的表格 table-name 所在的表格空間中已啟用捨棄表格回復。 當表格空間已啟用捨棄表格回復時,則表格捨棄時會建立一個歷程檔案項目。 此歷程檔案包含的資料在回復捨棄的表格時非常有用。 為捨棄的表格寫入新的歷程檔案項目失敗。 因此,表格捨棄無法完成。

此種錯誤可能的原因是歷程檔案所在的檔案系統已滿。

使用者回應

請確定資料庫管理程式能夠寫入歷程檔案。如果您不想要捨棄表格回復,請停用此功能,然後重新發出捨棄表格陳述式。

sqlcode:-20241

sqlstate:560C2

SQL20242N 指定在 TABLESAMPLE 子句中的範例大小無效。

解說

指定在 TABLESAMPLE 子句中的範例大小必須是一個大於零且小於或等於 100 的正數值。

未處理陳述式。

使用者回應

將 TABLESAMPLE 子句中指定的範例大小變更為一個有效的數值,大於零且小於或等於 100。

sqlcode:-20242

sqlstate:2202H

SQL20243N 視圖 view-name 是 MERGE 陳述式中的目標,但遺漏 operation 作業的 INSTEAD OF 觸發程式。

解說

視圖 view-name 是 MERGE 陳述式中的直接或間接目標,且已定義一個 INSTEAD OF 觸發程式,但並未對所有作業定義 INSTEAD OF 觸發程式。operation 作業的觸發程式不存在。

使用者回應

請在視圖 view-name 上為 UPDATE、DELETE 及 INSERT 作業建立 INSTEAD OF 觸發程式,或捨棄視圖的所有 INSTEAD OF 觸發程式。

sqlcode:-20243

sqlstate:428FZ

SQL20247N 表格 table-name 無法分割,且不能包含資料類型為 DATALINK 的直欄。

解說

試圖用來建立或變更表格 table-name 的方式,會建立出包含資料類型為 DATALINK 之直欄的分割表格。表格不能又被分割,又包含這種直欄。

使用者回應

將表格建立或變更為分割表格,或是包含資料類型為 DATALINK 之直欄的表格,但不要同時具有這二種性質。

sqlcode: -20247

sqlstate: 429BH

SQL20249N 未處理陳述式,因為需要明確地重新連結名稱為 package-name 的套件。

解說

套件 package-name 包含必須重新連結的區段。

使用者回應

使用 REBIND 指令或 BIND 指令,明確地重新連結套件。若要保留函數及資料類型解析,請在 REBIND 指令上指定 RESOLVE CONSERVATIVE 選項。

sqlcode:-20249

sqlstate:560C5