a) テーブルをチェックして、作成する必要がある他のテーブルの名前を見つける b) そのテーブルが既に存在するかどうかをチェックする c) 存在しない場合は作成する d) 彼女に新しいデータを入力する
これで、テーブルが存在するかどうかを確認する必要がある部分まで、すべて正常に機能します。
set @NewTablename = (select NAME from SomeTable where ID= @i)
set @Tabelexists = 'select case when exists(select * from sys.tables where name = ''' + @NewTabelname + ''') then 1 else 0 end'
declare @check as int execute(@Tabelexists)
IF @check is NULL
BEGIN
Create Table
END
ELSE
BEGIN
execute('Delete from '+ @NewTableName)
END
<other stuff like inserts and so on)
しかしどういうわけか、@check は、テーブルが存在しない場合は常に NULL のように見え、存在する場合は 1 になります。
IF @check is null
テーブルが存在しない場合、TRUE部分のみをチェックすると実行されます。その時点で存在する場合、何も実行されません.....
IF @check =1
ELSEのみが実行されていることを確認すると
@check の値は、明らかに常に NULL または 1 または 0 のいずれかです........
私はここで途方に暮れています!変数をテーブル名として使用してテーブルの存在を確認するにはどうすればよいですか?
ダミアン、あなたの言っていることは理解できます。しかし、私がこのようにすると、まだテストできる結果がありません:
declare @check as int execute ('select case when exists(select * from sys.tables where name = ''' + @Tabelnaam + ''') then 1 else 0 end')