一時テーブルが存在するかどうかを確認し、存在する場合は一時テーブルを作成する前に削除します。質問する

一時テーブルが存在するかどうかを確認し、存在する場合は一時テーブルを作成する前に削除します。質問する

次のコードを使用して、一時テーブルが存在するかどうかを確認し、存在する場合は再度作成する前にテーブルを削除します。列を変更しない限り、正常に動作します。後で列を追加すると、「無効な列」というエラーが表示されます。何が間違っているのか教えてください。

IF OBJECT_ID('tempdb..#Results') IS NOT NULL
    DROP TABLE #Results

CREATE TABLE #Results
(
    Company                CHAR(3),
    StepId                TINYINT,
    FieldId                TINYINT,
)

select company, stepid, fieldid from #Results

--Works fine to this point

IF OBJECT_ID('tempdb..#Results') IS NOT NULL
    DROP TABLE #Results

CREATE TABLE #Results
(
    Company                CHAR(3),
    StepId                TINYINT,
    FieldId                TINYINT,
    NewColumn            NVARCHAR(50)
)

select company, stepid, fieldid, NewColumn from #Results

--Does not work

ベストアンサー1

エラーを再現できません。

おそらく私は問題を理解していないのでしょう。

次の例は、SQL Server 2005 では問題なく動作し、2 番目の選択結果に「foo」列が追加されます。

IF OBJECT_ID('tempdb..#Results') IS NOT NULL DROP TABLE #Results
GO
CREATE TABLE #Results ( Company CHAR(3), StepId TINYINT, FieldId TINYINT )
GO
select company, stepid, fieldid from #Results
GO
ALTER TABLE #Results ADD foo VARCHAR(50) NULL
GO
select company, stepid, fieldid, foo from #Results
GO
IF OBJECT_ID('tempdb..#Results') IS NOT NULL DROP TABLE #Results
GO

おすすめ記事