共用方式為


診斷訊息

每個 SQLSTATE 都會傳回診斷訊息。 相同的 SQLSTATE 通常會以數則不同的訊息傳回。 例如,SQLSTATE 42000 (語法錯誤或存取違規) 會針對 SQL 語法中的大部分錯誤傳回。 不過,每個語法錯誤都可能以不同的訊息描述。

範例診斷訊息會列在附錄 A 和每個函式 SQLSTATE 資料表的 [錯誤] 資料行中。 雖然驅動程式可以傳回這些訊息,但更可能傳回資料來源傳遞給驅動程式的任何訊息。

應用程式通常會向使用者顯示診斷訊息,以及 SQLSTATE 和原生錯誤碼。 這可協助使用者和支援人員判斷任何問題的原因。 此時,內嵌在訊息中的元件資訊特別有用。

診斷訊息來自 ODBC 連線中的資料來源和元件,例如驅動程式、閘道和驅動程式管理員。 一般而言,資料來源並不直接支援 ODBC。 因此,如果 ODBC 連線中的元件收到來自資料來源的訊息,則必須將資料來源識別為訊息的來源。 此元件也必須將其本身識別為接收訊息的元件。

如果錯誤或警告的來源是元件本身,診斷訊息也必須說明這一點。 因此,訊息的文字會有兩種不同的格式。 針對資料來源中未發生的錯誤和警告,診斷訊息必須使用下列格式:

[ vendor-identifier ][ ODBC-component-identifier ] component-supplied-text

針對資料來源中發生的錯誤和警告,診斷訊息必須使用下列格式:

[ vendor-identifier ][ ODBC-component-identifier ][ data-source-identifier ] data-source-supplied-text

下表顯示每個元素代表的意義。

元素 意義
vendor-identifier 如元件中發生錯誤或警告,或直接從資料來源收到錯誤或警告,此元素可識別元件的廠商。
ODBC-component-identifier 如元件中發生錯誤或警告,或直接從資料來源收到錯誤或警告,此元素可識別元件。
data-source-identifier 可識別資料來源。 如果是以檔案為基礎的驅動程式,通常會是檔案格式,例如 Xbase[1] 針對以 DBMS 為基礎的驅動程式,這表示 DBMS 產品。
component-supplied-text 由 ODBC 元件產生。
data-source-supplied-text 由資料來源產生。

[1] 在此情況下,驅動程式會同時作為驅動程式和資料來源運作。

方括弧 ([ ]) 必須包含在訊息中,而且不用於表示選擇性項目。