Firebird i źródło procedur.

0

Witam.
Chcę zmodyfikować źródło zapisanej procedury w bazie Firebird 2.5. Przy próbie jej wczytania w IBExpertem czy SQL Managerem wyświetla mi tylko nagłówek procedury, bez głównego kodu procedury. Łączę się do bazy jako SYSDBA. Wykluczam więc uprawnienia.
SQL Manager wyrzuca tylko komunikat Precompiler Error: Syntax error - .

np:

 SET TERM ^ ;

CREATE OR ALTER PROCEDURE DAJ_KONTO (
    akodfirmy integer,
    arok char(4),
    adataod date,
    adatado date)
returns (
    rorgid char(64),
    rorgidnad char(64),
    rorgidgrp char(33),
    rorgidrodz char(24),
    rkonto char(30),
    rnazwa varchar(75))
as
^

SET TERM ; ^

/* Existing privileges on this procedure */

GRANT EXECUTE ON PROCEDURE FKSPD_KONTABUDZETU TO PUBLIC;
GRANT EXECUTE ON PROCEDURE FKSPD_KONTABUDZETU TO SYSDBA;
0

Masz pewność ze to ciało tam jest ? Spróbuj wyciągać select z tabeli systemowej. W firebird możesz skompilować procedurę do blr i usunąć jej ciało i wtedy jej nie widzisz. Parametry z kolei są w innej tabeli wiec blr wykorzystuje silnik a ibexpert z zawartości tabel z parametrami i ciałem sklada procedurę do edycji.

0

Witam. Nie mam dużego doświadczenia w bazach danych a tym bardziej w Firebirdzie. Podejrzewam że producent oprogramowanie mógł celowo usnąć kod procedur.
Pytanie brzmi czy mogę je zdekompilować z BLR ?

Zapytanie

select rdb$procedure_blr from rdb$procedures where rdb$procedure_name='DAJ_KONTO'; 

zwraca

0

Pewnie ze da rade ale nie jest to trywialne. W zasadzie sprowadza się to do logiki zbiorów. Defacto firebird jest open source to można zobaczyć jak on to parsuje. Kiedys na rosyjskich stronach widziałem jak ludzie sie wypowiadali ze to robili. Niemniej mając zależności, strukturę db i info co procedura robi to chyba szybciej napisac jej ekwiwalent niż robic re blr, niemniej jest to rozwijające.

0

Dzięki za pomoc. Zawsze kusi by pójść na skróty.

1 użytkowników online, w tym zalogowanych: 0, gości: 1