Podręcznik użytkownika

Dopasowywanie odwzorowania SQLCODE

Domyślnie DB2 Connect odwzorowuje kody SQLCODE i tokeny z każdego serwera baz danych hosta lub AS/400 IBM na odpowiednie kody SQLCODE DB2 UDB. Następujące pliki są kopiami domyślnego odwzorowania SQLCODE:

dcs1dsn.map
Odwzorowuje kody SQLCODE DB2 for MVS/ESA i DB2 UDB dla OS/390

dcs1ari.map
Odwzorowuje kody SQLCODE DB2 for VSE & VM.

dcs1qsq.map
Odwzorowuje kody SQLCODE DB2 UDB for AS/400

Odwzorowanie nie jest konieczne w przypadku systemów DB2 for OS/2 i typu UNIX.

Jeśli użytkownik chce nadpisać domyślne odwzorowanie SQLCODE lub używa serwera baz danych hosta lub AS/400, który nie ma odwzorowania SQLCODE (serwer baz danych inny niż IBM), to może on skopiować jeden z wymienionych plików i używać go jako podstawy dla nowego pliku odwzorowania SQLCODE. Skopiowanie pliku, a nie bezpośrednia jego edycja daje pewność, że w razie konieczności można odnieść się do oryginalnego odwzorowania SQLCODE.

W łańcuchu parametrów katalogu DCS lub obiektu z informacjami o routingu DCE należy podać nazwę pliku nowego pliku odwzorowania SQLCODE. Informacje na temat aktualizowania katalogu DCS można znaleźć w rozdziale Aktualizowanie katalogów baz danych. Informacje na temat używania DCE można znaleźć w sekcji Dodatek D, Wykorzystanie DCE Directory Services.

Każdy plik odwzorowania jest plikiem ASCII utworzonym i modyfikowanym przy użyciu edytora ASCII. W czasie instalacji plik jest zapisywany w katalogu map ścieżki instalacji.

Plik ten może zawierać następujące specjalne typy wierszy:

&&
Logiczny początek pliku. Wszystkie wiersze znajdujące się przed pierwszym wystąpieniem && są uważane za komentarz i są pomijane. Jeśli po && nie występują żadne znaki, to odwzorowanie SQLCODE nie jest wykonywane. Można również wyłączyć odwzorowanie SQLCODE, używając parametru NOMAP w sposób poprzednio opisany.

*
Jako pierwszy znak w wierszu oznacza komentarz.

W
Jako jedyny znak w wierszu oznacza flagi ostrzeżeń, które powinny być ponownie odwzorowane. Domyślnie przekazywane są oryginalne flagi ostrzeżeń. 'W' musi być wielką literą.

Wszystkie pozostałe wiersze po && muszą być puste albo być instrukcjami odwzorowania w następującej postaci:

kod_wejściowy [, kod_wyjściowy [, lista_znaczników]]

kod_wejściowy reprezentuje jedną z następujących pozycji:

sqlcode
SQLCODE z serwera baz danych hosta lub AS/400.

U
Wszystkie nie zdefiniowane kody SQLCODE o wartości ujemnej (nie wymienione w pliku) są odwzorowane na określony kod_wyjściowy. Jeśli w tym wierszu nie podano kodu_wyjściowego, używany jest oryginalny SQLCODE. Ten znak musi być pisany wielką literą.

P
Wszystkie nie zdefiniowane kody SQLCODE o wartości dodatniej (nie wymienione w pliku) są odwzorowane na określony kod_wyjściowy. Jeśli w tym wierszu nie podano kodu_wyjściowego, używany jest oryginalny SQLCODE. Ten znak musi być pisany wielką literą.

ccnn
Kod klasy SQLSTATE z serwera baz danych hosta lub systemu AS/400. nn może przyjąć jedną z podanych wartości:

00
Niekwalifikowane pomyślne zakończenie,

01
Ostrzeżenie,

02
Brak danych,

21
Naruszenie liczności,

22
Wyjątek dotyczący danych,

23
Naruszenie ograniczenia,

24
Niepoprawny stan kursora,

26
Niepoprawny identyfikator instrukcji SQL,

40
Wycofanie zmian w transakcji,

42
Naruszenie dostępu,

51
Niepoprawny stan aplikacji,

55
Obiekt nie spełnia warunków wstępnych,

56
Inne błędy języka SQL lub produktu,

57
Zasób niedostępny lub interwencja operatora,

58
Błąd systemowy.

Podany kod_wyjściowy jest używany dla wszystkich kodów SQLCODE z danym kodem klasy, które nie są jawnie podane w pliku odwzorowania. Jeśli w tym wierszu nie podano kodu_wyjściowego, oryginalny SQLCODE jest odwzorowany na siebie bez nadpisywania znaczników.

Znaki cc muszą być pisane małymi literami.

Jeśli w pliku odwzorowania ten sam kod_wejściowy występuje więcej niż raz, używane jest jego pierwsze wystąpienie.

kod_wyjściowy reprezentuje kod wyjściowy SQLCODE. Jeśli nie podano żadnej wartości, używany jest oryginalny kod SQLCODE.

Jeśli podaje się kod wyjściowy, można również podać:

(s)
Kod wejściowy SQLCODE i ID produktu (ARI, DSN lub QSQ) będą umieszczone w polu znacznika komunikatu obszaru komunikacyjnego SQL.

Oryginalny SQLCODE jest zwracany jako jedyny znacznik. Opcję tę zaprojektowano do obsługi niezdefiniowanych kodów SQLCODE, z wyjątkiem wartości +965 i -969. Jeśli kodem_wyjściowym jest +965 lub -969, lista znaczników zwracana w polu SQLERRMC obszaru komunikacyjnego SQL zawiera oryginalny kod SQLCODE, po którym występuje identyfikator produktu, a następnie oryginalna lista znaczników.

Znak s musi być pisany małą literą.

(lista-znaczników)
Lista znaczników oddzielonych przecinkami. Aby pominąć dany znacznik, należy wpisać przecinek. Na przykład postać (,t2,,t4) oznacza, że pierwszy i trzeci znacznik wyjściowy są pomijane.

Każdy znacznik ma postać liczby (n) opcjonalnie poprzedzonej znakiem c, po której opcjonalnie występuje znak c lub i. Interpretacja podanych elementów jest następująca:

c
Typ danych znacznika z tą pozycją to CHAR (domyślnie). Jeśli znak c występuje przed n, to odnosi się on do znacznika wejściowego, jeśli występuje po znaku n, to odnosi się do znacznika wyjściowego. Znak c musi być pisany małą literą.

i
Typ danych znacznika z tą pozycją to INTEGER. Jeśli znak i występuje po n, to odnosi się do znacznika wyjściowego. Znak i nie powinien występować przed n, ponieważ hosty lub serwery baz danych AS/400 obsługują tylko znaczniki CHAR. Znak i musi być pisany małą literą.

n
Liczba lub liczby oznaczające używane znaczniki serwera baz danych hosta lub AS/400. Są one uporządkowane w takiej kolejności, w jakiej mają być umieszczane w wyjściowym obszarze komunikacyjnym SQL. Liczba oznacza znacznik serwera baz danych hosta lub AS/400. Uporządkowanie oznacza kolejność, w której znaczniki będą umieszczane w obszarze komunikacyjnym SQL.

Na przykład serwer baz danych hosta lub systemu AS/400 może zwrócić dwa tokeny, 1 i 2. Jeśli chcemy, aby token 2 pojawił się przed tokenem 1 w danych wyjściowych SQLCA to należy podać (2,1).

Wiele liczb znaczników można połączyć kropkami, tak aby utworzyły one jeden znacznik wyjściowy typu CHAR.

Do oddzielania znaczników wyjściowych używane są przecinki. Jeśli przed przecinkiem nie podano znacznika, to dla tej pozycji nie jest dołączany znacznik wyjściowy w obszarze komunikacyjnym SQL. Znaczniki występujące w wyjściowym obszarze komunikacyjnym SQL po ostatnim podanym znaczniku są odwzorowane na puste znaczniki.

Rysunek 6 przedstawia przykładowy plik odwzorowania SQLCODE.

Rysunek 6. Plik odwzorowania SQLCODE

&&
  -007    ,   -007   ,   (1)
  -010
  -060    ,   -171   ,   (2)
...
  -204    ,   -204   ,   (c1.2c)
...
  -633    ,   -206   ,   (,c1i)
 
  -30021  ,   -30021 ,   (c1c,c2c)
 
  cc00    ,   +000
...
  U       ,   -969   ,   (s)
  P       ,   +965   ,   (s)

Każda instrukcja odwzorowania znajdująca się w pliku jest opisana w następujący sposób:

  1. Kod SQLCODE jest odwzorowany z -007 na -007. Pierwszy znacznik wejściowy odebrany od serwera baz danych hosta lub AS/400 jest użyty jako pierwszy znacznik wejściowy, a jego domyślny typ danych to CHAR. Inne znaczniki nie są przekazywane.
  2. Kod SQLCODE jest odwzorowany z -010 na -010 (nie podano kodu wyjściowego SQLCODE). Brak znaczników umieszczanych w wyjściowym obszarze komunikacyjnym SQL.
  3. Kod SQLCODE jest odwzorowany z -060 na -171. Pierwszy znacznik wejściowy odebrany od serwera baz danych hosta lub AS/400 jest pomijany. Drugi jest używany jako pierwszy znacznik w wyjściowym obszarze komunikacyjnym SQL, a jego typ danych to CHAR. Brak drugiego znacznika w wyjściowym obszarze komunikacyjnym SQL.
  4. Kod SQLCODE jest odwzorowany z -204 na -204. Pierwszy i drugi znacznik odebrane przez serwer baz danych hosta lub AS/400 mają typ danych CHAR. Te dwa znaczniki wejściowe są łączone do postaci jednego znacznika wyjściowego o typie CHAR, który będzie pierwszym znacznikiem wyjściowym w obszarze komunikacyjnym SQL.
  5. Kod SQLCODE jest odwzorowany z -633 na -206. Pierwszy znacznik wejściowy odebrany od serwera baz danych hosta lub AS/400 ma typ CHAR. Jest on przekształcany do typu INTEGER i jest używany jako drugi znacznik w wyjściowym obszarze komunikacyjnym SQL. Pierwszy znacznik w wyjściowym obszarze komunikacyjnym SQL jest pusty, co oznaczono przecinkiem.
  6. Kod SQLCODE jest odwzorowany z -30021 na -30021. Pierwszy i drugi znacznik odebrane przez serwer baz danych hosta lub AS/400 mają typ danych CHAR i są używane jako pierwszy i drugi znacznik w wyjściowym obszarze komunikacyjnym SQL.
  7. Wszystkie kody SQLCODE w obszarach komunikacyjnych SQL z SQLSTATE z klasy 00 będą odwzorowane na SQLCODE +000.
  8. Wszystkie nie zdefiniowane kody SQLCODE są odwzorowane na -969. Opcja ta powinna być używana, tylko jeśli wszystkie odwzorowywalne kody są podane, łącznie z kodami identycznymi, niewymagającymi odwzorowania. Opcja (s) oznacza, że lista znaczników, która ma być zwrócona w polu SQLERRMC obszaru komunikacyjnego SQL zawiera oryginalny kod SQLCODE. Po nim występuje produkt, w którym wystąpił błąd, a następnie oryginalna lista znaczników. Jeśli nie podano pozycji U, wszystkie kody nieznajdujące się na liście są przesyłane bez odwzorowania.
  9. Wszystkie nie zdefiniowane kody SQLCODE o znaku dodatnim są odwzorowane na +965. Opcja ta powinna być używana, tylko jeśli wszystkie odwzorowywalne kody są podane, łącznie z kodami identycznymi, niewymagającymi odwzorowania. Opcja (s) oznacza, że lista znaczników, która ma być zwrócona w polu SQLERRMC obszaru komunikacyjnego SQL zawiera oryginalny kod SQLCODE. Po nim występuje produkt, w którym wystąpiło ostrzeżenie, a następnie oryginalna lista znaczników. Jeśli nie podano pozycji P, wszystkie kody o znaku dodatnim nieznajdujące się na liście są przesyłane bez odwzorowania.


[ Początek strony | Poprzednia strona | Następna strona | Spis treści | Indeks ]