RDB$ERROR and "Cannot transliterate character between character sets"
FB 4.3.2.2770. Character set - WIN1251.
-
Create exception: CREATE EXCEPTION EXC$CHECK_DATA 'Check data';
-
Create procedure: CREATE OR ALTER PROCEDURE TEST_DO_EXCEPTION AS BEGIN EXCEPTION EXC$CHECK_DATA 'Исключение'; END
-
Throw exception: EXECUTE BLOCK AS DECLARE VARIABLE TXT VARCHAR(1024); BEGIN EXECUTE PROCEDURE TEST_DO_EXCEPTION;-- There no error transliterate -- EXECUTE STATEMENT 'EXECUTE PROCEDURE TEST_DO_EXCEPTION';-- There error transliterate
WHEN ANY DO BEGIN :TXT = RDB$ERROR(MESSAGE); EXCEPTION EXC$CHECK_DATA :TXT; END END
Result: EXC$CHECK_DATA. exception 2 EXC$CHECK_DATA Исключение At procedure TEST_DO_EXCEPTION line: 4, col: 5 At block line: 6, col: 5. At block line: 11, col: 9.
-
Throw exception inside EXECUTE STATEMENT: EXECUTE BLOCK AS DECLARE VARIABLE TXT VARCHAR(1024); BEGIN -- EXECUTE PROCEDURE TEST_DO_EXCEPTION;-- There no error transliterate EXECUTE STATEMENT 'EXECUTE PROCEDURE TEST_DO_EXCEPTION';-- There error transliterate
WHEN ANY DO BEGIN :TXT = RDB$ERROR(MESSAGE); EXCEPTION EXC$CHECK_DATA :TXT; END END
Result: Arithmetic overflow or division by zero has occurred. arithmetic exception, numeric overflow, or string truncation. Cannot transliterate character between character sets. At block line: 10, col: 9.
This error is only if there are non-latin letters.