Code: Select all
select
*
from
table1,
table2, -- this table not exist
table3How I can find position in sql text when sql raise error?
Code: Select all
select
*
from
table1,
table2, -- this table not exist
table3Code: Select all
procedure GetErrorPos(SQLText: TStrings; ErrOffset: Integer; out Line, Position: integer);
var
i, len: integer;
begin
len := 0;
for i:= 0 to SQLText.Count - 1 do
if length(SQLText[i]) + len >= ErrOffset then
begin
Line := i;
position := len + length(SQLText[i]) - ErrOffset;
exit;
end
else
len := len + length(SQLText[i]);
end;
procedure TForm1.FormCreate(Sender: TObject);
var
l,p: integer;
begin
try
OraQuery1.Open;
except
on e: EOraError do
begin
GetErrorPos(OraQuery1.SQL, OraQuery1.ErrorOffset, l, p);
ShowMessage(Format('ErrorCode: %d, ErrorMsg: %s, Line: %d, Position: %d',[e.ErrorCode,e.Message,l,p]));
end;
end;
end;
Code: Select all
select
s.tablespace_name as "Tablespace",
to_char(sum(s.bytes), 'fm999g999g999g999g990') as "Space (bytes)"
from
dba_free_space s
group by s.tablespace_name
order by sum(s.bytes), s.Code: Select all
procedure GetErrorPos(SQLText: TStrings; ErrOffset: Integer; out Line, Position: integer);
var
i: integer;
begin
Position := ErrOffset;
for i:= 0 to SQLText.Count - 1 do
if length(SQLText) + 2 >= Position then
begin
Line := i + 1;
inc(Position);
exit;
end
else
Position := Position - length(SQLText) - 2;
end;