Autor Téma: SQLCode to string  (Přečteno 2503 krát)

Offline DuPr

  • Příspěvků: 19
  • Karma: 0
SQLCode to string
« kdy: 14-02-2013, 07:04:13 »
Ahoj,

prosím o radu. Lze z uložené procedury (FB 2.1) získat chybu SQLCode ne jako číslo, ale už "převedenou" na textovou zprávu (v parametru)?

OutputParametr - OP_ERROR_MESSAGE varchar(200);

.
.
.
WHEN ANY DO
BEGIN
  OP_EROR_MESSAGE = SQLCODE   //tady bych potreboval ziskat text message
END

Díky

Offline pf1957

  • Padawan
  • ******
  • Příspěvků: 2475
  • Karma: 131
    • Verze Delphi: D2007, XE3, DX10
Re:SQLCode to string
« Odpověď #1 kdy: 14-02-2013, 10:14:42 »
AWHEN ANY DO
BEGIN
  OP_EROR_MESSAGE = SQLCODE   //tady bych potreboval ziskat text message
END

AFAIK, tak prima podpora pro to neni zadna. Ty texty jsou v firebird.msg a na ne DB nevidi. Klient ty texty vola pres API napr. (v principu) isc_sql_interprete(sqlcode),  fb_interpret(gdscode).

Helen Borrie nekde psala, ze to jde, ale bude to dost pracne: musis si udelat tabulku se sloupci SQLCODE, GDSCODE a MESSAGE a nejak do ni dostat obsah souboru firebird.msg. Kdyz jsem zkousel vygooglit format toho souboru, tak jsem nic nenasel - na prvni pohled mi to pripomina nejaky .dbf s hlavickou
a pak recordy CHAR(60), DWORD, DWORD, ale nemam tu nic, cim bych to otevrel.

Jinak na forech vetsinou doporucuji vytahnout ten kod az na klienta a teprve tam ho interpretovat - to uz bys mohl volat to API jako to delaji komponenty.

Offline DuPr

  • Příspěvků: 19
  • Karma: 0
Re:SQLCode to string
« Odpověď #2 kdy: 14-02-2013, 11:36:34 »

Offline pf1957

  • Padawan
  • ******
  • Příspěvků: 2475
  • Karma: 131
    • Verze Delphi: D2007, XE3, DX10
Re:SQLCode to string
« Odpověď #3 kdy: 14-02-2013, 12:14:09 »
Firebird 2.1 Error Codes
http://www.firebirdsql.org/file/documentation/reference_manuals/reference_material/Firebird-2.1-ErrorCodes.pdf
No jo, ale to nerika nic o formatu toho souboru firebird.msg: navic kdyz jsem se ted do nej znovu dival podrobneji, tak obsahuje nejakou hlavicku a posloupnost textu ve tvaru CODE:dword, LENGTH:dword, MESSAGE:varchar(LENGTH) a na konci nejakou tabulku, takze s jeho ctenim to bude nejspis slozitejsi, nez se mi na prvni pohled zdalo.

Offline DuPr

  • Příspěvků: 19
  • Karma: 0
Re:SQLCode to string
« Odpověď #4 kdy: 14-02-2013, 12:38:51 »
Nápad s tabulkou se mně líbí. Podle toho PDFka si naplním vlastní tabulku (teda alespoň "nejdůležitější" chyby). Dám si tam message pro češtinu, angličtinu... a podle SQLCODE, GDSCODE budu dotahovat. Toto řešení mně postačuje. Díky

Offline pf1957

  • Padawan
  • ******
  • Příspěvků: 2475
  • Karma: 131
    • Verze Delphi: D2007, XE3, DX10
Re:SQLCode to string
« Odpověď #5 kdy: 14-02-2013, 12:55:42 »
Nápad s tabulkou se mně líbí. Podle toho PDFka si naplním vlastní tabulku (teda alespoň "nejdůležitější" chyby). Dám si tam message pro češtinu, angličtinu... a podle SQLCODE, GDSCODE budu dotahovat. Toto řešení mně postačuje. Díky
Jestli mas IBExperta, tak ten ma v menu Tools polozku Localize IB Messages, ktere umozni nacist a editovat obsah toho firebird.msg souboru a exportovat si ho do textu. Takze alespon texty se daji jednoduse extrovat. Horsi to bude s temi kody, to se mi nikde nepovedlo vygooglit

Offline Delfin

  • Padawan
  • ******
  • Příspěvků: 1712
  • Karma: 66
  • SW konzultant
    • Verze Delphi: 2009, Tokyo
Re:SQLCode to string
« Odpověď #6 kdy: 22-02-2019, 05:54:16 »
Dodam, ze nativni moznost ziskat text chyby z kodu chyby byla pridana do Firebird 4 v podobe systemove funkce RDB$ERROR (viz. Firebird 4.0.0 Beta 1 Release Notes, strana 88).
I'm a soldier, so don't panic! I know the underground! I like WTFPL license! No more Google, go duck, go!