如果假设字段id 是 int型长度为8,name是字符串型长度为15, 在delphi里使用TQuery组件并并以bde为引擎我会这么写,但我 感觉这样效率不高,不知道有没有更好的方法?with Query1 do begin SQL.Clear; SQL.Add('create table c(id int(8),name char(15))'); try ExecSQL; Active:=false; SQL.Clear; SQL.Add('select * from a'); try Active:=true; if RecordCount>0 then begin First; while not Eof do begin Query2.SQL.Clear; Query2.SQL.Add('insert into c(id,name) values(:pid,:pname)'); Query2.ParamByName['pid'].AsInteger:=FieldValues['id']; Query2.ParamByName['pname'].AsString:=FieldValues['name']; try Query2.ExecSQL; finally Query2.Active:=false; end; Next; end; end; finally Active:=false; end; SQL.Clear; SQL.Add('select * from b'); try Active:=true; if RecordCount>0 then First; while not Eof do begin Query2.SQL.Clear; Query2.SQL.Add('insert into c(id,name) values(:pid,:pname)'); Query2.ParamByName['pid'].AsInteger:=FieldValues['id']; Query2.ParamByName['pname'].AsString:=FieldValues['name']; try Query2.ExecSQL; finally Query2.Active:=false; end; Next; end; end; finally Active:=false; end; finally Active:=false; end; end;
在delphi里使用TQuery组件并并以bde为引擎我会这么写,但我
感觉这样效率不高,不知道有没有更好的方法?with Query1 do begin
SQL.Clear;
SQL.Add('create table c(id int(8),name char(15))');
try
ExecSQL;
Active:=false;
SQL.Clear;
SQL.Add('select * from a');
try
Active:=true;
if RecordCount>0 then begin
First;
while not Eof do begin
Query2.SQL.Clear;
Query2.SQL.Add('insert into c(id,name) values(:pid,:pname)');
Query2.ParamByName['pid'].AsInteger:=FieldValues['id'];
Query2.ParamByName['pname'].AsString:=FieldValues['name'];
try
Query2.ExecSQL;
finally
Query2.Active:=false;
end;
Next;
end;
end;
finally
Active:=false;
end;
SQL.Clear;
SQL.Add('select * from b');
try
Active:=true;
if RecordCount>0 then
First;
while not Eof do begin
Query2.SQL.Clear;
Query2.SQL.Add('insert into c(id,name) values(:pid,:pname)');
Query2.ParamByName['pid'].AsInteger:=FieldValues['id'];
Query2.ParamByName['pname'].AsString:=FieldValues['name'];
try
Query2.ExecSQL;
finally
Query2.Active:=false;
end;
Next;
end;
end;
finally
Active:=false;
end;
finally
Active:=false;
end;
end;
select * from A
union
select * from b
union all
select * from b