델파이4에 MS-SQL7.0을 쓰고있습니다.
그런데 MS-SQL7.0에서 제공되는 시스템 임시테이블(#을사용하는 테이블)을
사용하는데 에러가 발생합니다.
임시테이블을 사용하고 삭제했는데도 이미 존재한다고 메세지가 발생합니다.
어떤때는 발생하고 어떤때는 발생하지 않는다고 합니다.
아마도 델파이4에서 MS-SQL7.0을 정상적으로 지원하지 않는다고 하는것 같던데...
MS-SQL6.5에서는 정상적으로 실행되는 프로그램입니다.
ex)select 입고업체, sum(수량) as 수량
into #TEMP
from 입고
where 입고일자 between '2001-01-01' and '2000-03-31'
select 입고업체명, 수량
from #TEMP, 업체
where #TEMP.입고업체 = 업체.업체코드
drop table #TEMP
=>실제 임시테이블을 사용하는 쿼리는 더 복잡합니다.
쿼리문을 고치는 방법이 아니랍니다...
일단 델파이가 지원하지 않을수도 있겠지만, (저는 5.0을 쓰는 관계로 잘 몰라서...)
지금 select into 구문에서
전역 임시테이블을 사용하시지 마시고 지역 임시테이블을 사용해 보시기를 권합니다.
sql 7.0에서 전역 테이블은 #
지역 임시테이블은 ## 입니다.
간단하게 말씀드리면, 테이블을 현재 세션에서만 사용하고 사장시키는 것은 ## 입니다.
select 입고업체, sum(수량) as 수량
into ##TEMP
from 입고
where 입고일자 between '2001-01-01' and '2000-03-31'
select 입고업체명, 수량
from ##TEMP, 업체
where ##TEMP.입고업체 = 업체.업체코드
drop table ##TEMP
이렇게 하시면 될 듯 합니다.
에러가 나는 이유는 이미 #TEMP가 만들어져 있는데 또 다른 사람이 만들려고 해서 생기는 문제일겁니다.
대답이 되었는지 모르겠네요..
즐거운 코딩하세요..
홍미자 wrote:
> 델파이4에 MS-SQL7.0을 쓰고있습니다.
> 그런데 MS-SQL7.0에서 제공되는 시스템 임시테이블(#을사용하는 테이블)을
> 사용하는데 에러가 발생합니다.
> 임시테이블을 사용하고 삭제했는데도 이미 존재한다고 메세지가 발생합니다.
> 어떤때는 발생하고 어떤때는 발생하지 않는다고 합니다.
> 아마도 델파이4에서 MS-SQL7.0을 정상적으로 지원하지 않는다고 하는것 같던데...
> MS-SQL6.5에서는 정상적으로 실행되는 프로그램입니다.
>
> ex)select 입고업체, sum(수량) as 수량
> into #TEMP
> from 입고
> where 입고일자 between '2001-01-01' and '2000-03-31'
>
> select 입고업체명, 수량
> from #TEMP, 업체
> where #TEMP.입고업체 = 업체.업체코드
>
> drop table #TEMP
>
> =>실제 임시테이블을 사용하는 쿼리는 더 복잡합니다.
> 쿼리문을 고치는 방법이 아니랍니다...