Hallo DPler,
ich habe eine Tabelle:
CREATE TABLE test (TXT VARCHAR(255));
eine externe Funktion in einer
dll:
Delphi-Quellcode:
function IB_ExtractBetween(Value, A, B: PAnsiChar): PAnsiChar; cdecl; export;
var
aPos: Integer;
bPos: Integer;
tmpA: string;
tmpB: string;
tmpValue: string;
begin
Result := '';
tmpA := String(AnsiString(A));
tmpB := String(AnsiString(B));
tmpValue := String(Value);
aPos := Pos(tmpA, tmpValue);
if aPos > 0 then
begin
aPos := aPos + Length(tmpA);
bPos := PosEx(tmpB, tmpValue, aPos);
if bPos > 0 then
begin
Result := PAnsiChar(AnsiString(Copy(tmpValue, aPos, bPos - aPos)));
end;
end;
end;
im interbase wie folg implementiert:
Delphi-Quellcode:
DECLARE EXTERNAL FUNCTION EXTRACTBETWEEN
CSTRING(256) CHARACTER SET NONE, CSTRING(256) CHARACTER SET NONE, CSTRING(256) CHARACTER SET NONE
RETURNS CSTRING(256) CHARACTER SET NONE FREE_IT
ENTRY_POINT 'IB_ExtractBetween' MODULE_NAME 'udf_dwfunc';
und folgenden Aufruf:
SELECT EXTRACTBETWEEN(CAST(LD.AdditionalInfo AS VARCHAR(255)), '[', ']') FROM LogDetail LD WHERE LD.Event_ID = 2
Das SELECT funktioniert. Aber wenn ich es direkt einfügen will, klappts nicht mit dem o.g. Fehler:
Delphi-Quellcode:
insert into test
SELECT EXTRACTBETWEEN(CAST(LD.AdditionalInfo AS VARCHAR(255)), '[', ']') FROM LogDetail LD WHERE LD.Event_ID = 2
Was ist da los?