I often have over 5000 chars in queries and never had problems.
I do it in this way:
var q: string;
...
q:='';
q:=q+'SELECT ....';
q:=q+'UNION...';
q:=q+....';
...
SQLQuery.SQL.Text:=q;
SQLQuery.Open;
while not SQLQuery.EOF do
begin
SQLQuery.Next;
end;
SQLQuery.Close;