Вопрос
близкие.Когда я поверил, что я гений и что метаданные являются моей интеллектуальной собственностью, я разработал в Firebird процедуру для отслеживания изменений в одной таблице, что-то с идентификаторами и отметками времени.Итак, я сделал очень умный ход и удалил исходный код этой процедуры.
Кто-нибудь знает декодер BLR или документ, который мне нужен для его создания?
ТИА.
Решение
Я видел инструмент отображения BLR (в инструменте администратора IB Джейсона Уортона), но он отображал только имена BLR, а не транслитерировал обратно в язык SQL/proc.Я думаю, того, что вы ищете, не существует.
Ты можешь получить документацию BLR здесь, хотя.
Другие советы
В самом Firebird есть хороший декодер BLR (двоичный) в BLR (текст).Вы можете включить его с помощью set blob all
(или set blobdisplay all
).Вы можете вызвать его из ISQL:
SQL> set term !;
SQL> create procedure p1
CON> as
CON> declare n integer = 1;
CON> begin
CON> n = n * 2;
CON> end!
SQL> set term ;!
SQL>
SQL> set blob all;
SQL> commit;
SQL>
SQL> select rdb$procedure_blr from rdb$procedures where rdb$procedure_name = 'P1';
RDB$PROCEDURE_BLR
=================
1a:3
==============================================================================
RDB$PROCEDURE_BLR:
blr_version5,
blr_begin,
blr_message, 1, 1,0,
blr_short, 0,
blr_begin,
blr_declare, 0,0, blr_long, 0,
blr_assignment,
blr_literal, blr_long, 0, 1,0,0,0,
blr_variable, 0,0,
blr_stall,
blr_label, 0,
blr_begin,
blr_begin,
blr_assignment,
blr_multiply,
blr_variable, 0,0,
blr_literal, blr_long, 0, 2,0,0,0,
blr_variable, 0,0,
blr_end,
blr_end,
blr_end,
blr_send, 1,
blr_begin,
blr_assignment,
blr_literal, blr_short, 0, 0,0,
blr_parameter, 1, 0,0,
blr_end,
blr_end,
blr_eoc
==============================================================================
Если у вас все еще есть база данных, есть вероятность, что источник процедуры все еще где-то находится, но помечен как удаленный.Вы можете попытаться открыть файл базы данных в шестнадцатеричном редакторе и выполнить поиск по имени процедуры.