К> Hi, многоуважаемый All!

К>     Люди, человеки, - помогите разобратся ...

Разобрался сам ...
Как я понял, портилась память процесса из-за вызова UDF в тригере на
табличку (insert) который в свою очередь дёргался из тригера на View
... Причём этот код безболезнено работал уже около 1 года :(
Может я что-то не правильно написал ?

Ниже привожу код функции UDF и ей обьявление в БД:

{ DECLARE EXTERNAL FUNCTION GenGUID
   bigint
   RETURNS CSTRING(50) FREE_IT
  ENTRY_POINT 'GenGUID'  MODULE_NAME 'ME_UDF' }


  function GenGUID(var i : int64): PChar; cdecl; export;

         function CreateClassID: string;
                var ClassID: TGUID; P: PWideChar;
         begin
                 CoCreateGuid(ClassID);
                 StringFromCLSID(ClassID, P);
                 Result := P;
                 CoTaskMemFree(P);
         end;

        var P: PChar;
                        s: string[36];
                        s2 : String[16];
        begin
         P := ib_util_malloc(33);
         s := Copy(CreateClassID, 2, 36);
         if i < 0
                then s2 := '<Undefined User>'
                 else if i = 0
                                         then s2 := '<= ASP Server =>'
                                                else S2 := IntToHex(i, 16);
         s2 := Copy('0000000000000000', 1, 16 - Length(s2)) + s2;
         Result := StrPCopy(P, s2 + '-' +Copy(s, 25, 12) + Copy(s, 20, 4) + 
Copy(s, 15, 4) + Copy(s, 10, 4) + Copy(s, 1, 8));
 end;




С уважением,
Константин Григорьевич.
===============


Ответить