2011-06-19 5 views
0

は、次の点を考慮してください:SQL 2005 - 一時テーブルの問題

declare @abbrev varchar(20); set @abbrev=''; 
select pk_term into #t2 from #t1 where pk_term in (select distinct(fk_term) from tblabbreviations where abbreviation like @abbrev) 
select @count=count(*) from #t2 
print 'count t2='+convert(varchar(10),@count) 

#t1が10行が含まれていると。 @abbrev = 'av%'と言ったときに、#ab2が ''のときは#t2に10行、10行以下の場合(通常はそれ以下)にします。

declare @abbrev varchar(20); set @abbrev=''; 
if @abbrev <> '' 
    begin 
     select pk_term into #t2 from #t1 where pk_term in (select distinct(fk_term) from tblabbreviations where abbreviation like @abbrev) 
     select @count=count(*) from #t2 -- should be same as t1 
     print 'count t2='+convert(varchar(10),@count) 
    end 
else 
    select pk_term into #t2 from (select pk_term = null) -- ensure #t2 is created regardless 

もちろん、私はエラーを取得する#t2の「は既にという名前のオブジェクトがあります 『:

は、私は、これは試してみました』データベースに。」

この問題を回避するにはどうすればよいですか?

事前に感謝します。

RGDS、マーク

答えて

1

あなたが先にそれを使用するのではなく、それはSELECT ... INTOの結果として作成されたの#t2のを作成するためにCREATE TABLE #t2を使用しています。

CREATE TABLE #t2 (
    pk_term VARCHAR(100) -- Or whatever... 
) 

IF ... 
BEGIN 
    INSERT INTO #t2 
    SELECT something... 
END 
ELSE 
BEGIN 
    INSERT INTO #t2 
    SELECT something else... 
END 
+0

ありがとうございました。とても明らか!私は脳の霧の瞬間を持っていた:) – Mark

関連する問題