有没有办法让多个TADOQuery可以访问相同的会话或交易信息?
TADOQuery都有相同的TADOCOnnection,但这并不起作用。
示例 - 我有一个生成临时表的查询,我想在另一个查询中使用该临时表,但是当我尝试时,它并不知道临时表。
procedure Foo(dbCon : TADOConnection);
var
q1 : TADOQuery; //TODO : set your ADOQuery to use a forward only read only cursor.
q2 : TADOQuery;
begin
q1 := TADOQuery.Create(nil);
q1.Connection := dbCon;
q1.SQL.Text := 'SELECT id INTO #TempT FROM dFTNodes;';
q1.Active := true;
q2 := TADOQuery.Create(nil);
q2.Connection := dbCon;
q2.SQL.Text := 'SELECT id FROM #TempT;';
q2.Active := true; //Fails here does not know table #TempT
end;
答案 0 :(得分:3)
如果您的TADOConnection未定义为KeepConnection=True
,这是默认值,
执行q1后连接断开,会话丢失,#TempT消失
通常,如果没有使用该连接的活TCustomAdodatasets,将关闭使用KeepConnection=False
的连接。
q2将获得一个新会话,但无法访问#TempT。