2014-10-23 3 views
0

여러 TADOQuery가 동일한 세션 또는 거래 정보에 액세스 할 수 있도록하는 방법이 있나요?임시 테이블

두 TADOQuery 같은이 TADOConnection을 가지고 있지만, 그 작동하지 않습니다.

예 - 나는 임시 테이블, 내가 다른 쿼리에 그 임시 테이블을 사용하려면,하지만 난하려고 할 때, 그것은 임시 테이블에 대해 알고하지 않습니다를 생성하는 하나 개의 쿼리가 있습니다. 기본적으로 당신의 TADOConnection가 KeepConnection=True에 정의되어 있지 않은 경우

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

구문은 SQL-Server와 비슷하지만 SQL-Server입니까? BTW'q1.Active은 : = 진정한;''q1.ExecSql 할 필요가있을 것이다;' – bummi

+0

네, 그것은 .ExecSql 나에게 같은 오류 "EOleException ... '잘못된 개체 이름'#TempT '" – runfastman

+0

입니다 @bummi : 아니,'SELECT <> INTO '은 행 집합을 반환하므로'Open'과 함께 잘 작동합니다. – runfastman

답변

3

, 는 연결이 1 분기의 실행 한 후 삭제 세션이 손실되고 #TempT가 없어. 일반적으로
KeepConnection=False를 사용하여 연결이 종료됩니다 연결을 사용하여 어떠한 생활 TCustomAdodatasets가없는 경우. q2에 새 세션이 생기고 #TempT에 액세스 할 수 없습니다.

+0

이것은 나의 예제에서 효과가 있었지만 내 주요 문제가 아님이 밝혀졌다. 나는 다른 질문을 게시했다. http://stackoverflow.com/questions/26550791/tadoquery-temp-table-lost-if-it-has-a-parameter-in-query – runfastman