伙计们。当我相信我是一个天才并且元数据是我的知识产权时,我在 firebird 中开发了一个程序来跟踪单个表上的更改,其中包含 id 和时间戳。所以,我做了一个非常聪明的举动,并删除了这个程序的来源。
有谁知道 BLR 解码器,或者我需要构建一个的文档?
TIA。
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
==============================================================================
我见过一个 BLR 显示工具(在 Jason Wharton 的 IB 管理工具中),但它只会显示 BLR 名称,不会音译回 SQL/proc 语言。我认为你要找的东西不存在。
不过,您可以在此处获取 BLR 文档。
如果您仍然拥有数据库,则过程源可能仍在某处但标记为已删除。您可以尝试在十六进制编辑器上打开数据库文件并搜索过程名称。