AQ : TADOQuery;AQ.SQL.Add('select groupID, userID, sum(useTime) as tolTime Into tmptbl from tblUser group by userID');
AQ.SQL.Add('select groupName, count(tmptbl.userID) as 组人数, sum(tmptbl.tolTime)/count(tmptbl.userID) as 组平均时间 from tblGroup inner join tmptbl on tblGroup.groupID = tmptbl.groupID group by groupName');
AQ.SQL.Add('Drop table tmptbl');AQ.OPEN;提示说 Commandtext does not return a result set
在SQL Server的查询分析器里执行以上SQL是没有问题的,也能返回记录
请问该如何设置才能在Delphi中执行成功
AQ.SQL.Add('select groupName, count(tmptbl.userID) as 组人数, sum(tmptbl.tolTime)/count(tmptbl.userID) as 组平均时间 from tblGroup inner join tmptbl on tblGroup.groupID = tmptbl.groupID group by groupName');
AQ.SQL.Add('Drop table tmptbl');AQ.OPEN;提示说 Commandtext does not return a result set
在SQL Server的查询分析器里执行以上SQL是没有问题的,也能返回记录
请问该如何设置才能在Delphi中执行成功
最后一句sql必须用ExecSQL()
最后exec
select和其它command不一样得用open
gz
最后该成aq.execsql可以执行,但是什么结果都返不回来。
aq.close;
aq.sql.clear;
AQ.SQL.Add('select groupID, userID, sum(useTime) as tolTime Into tmptbl from tblUser group by userID');
execsql;aq.close;
aq.sql.clear;
AQ.SQL.Add('select groupName, count(tmptbl.userID) as 组人数, sum(tmptbl.tolTime)/count(tmptbl.userID) as 组平均时间 from tblGroup inner join tmptbl on tblGroup.groupID = tmptbl.groupID group by groupName');
execsql;aq.close;
aq.sql.clear;
AQ.SQL.Add('Drop table tmptbl');
execsql;
我明白大家的意思,分步执行是没有问题的,问题是我想一次过将三条SQL送给SQL Server处理,建临时表、查询临时表、删除临时表三步组成一个事务,如果可以一次送给Server处理,改造一下就可以写成多线程查询,如果分成三步然后在connection中使用事务那么在线程中处理就比较麻烦,我不知道表达的清不清楚,很谢谢大家的帮忙。