1

# マクロを実行するときに一時テーブルを削除したいのですが、使用するのは正しいですか:

tempdb..sysobjects

スクリプトは次のとおりです。

sScript = sScript + "IF EXISTS (SELECT * FROM tempdb..sysobjects WHERE xtype = 'U' AND name like '#vl_enrolledByDate%') " & vbCrLf
sScript = sScript + "BEGIN " & vbCrLf
sScript = sScript + "DROP TABLE  #vl_enrolledByDate " & vbCrLf
sScript = sScript + "End " & vbCrLf

iVal = execute_sql_command(sServer, sDatabase, sScript)

sServer など。SQLPROD01 と sDatabase です。はscratchdbですが、 #tables はtempdbデータベースに保存されていると読みましたが、これがテーブルが存在しない理由ですか?

そのため、マクロを実行すると、次のエラー メッセージが返されます。

Run-time error '-2147217865 (80040e37)':

Cannot drop the table '#vl_enrolledByDate', because it does not exist
in the system cataglog.

しかし、 # 以外のテーブルを作成して使用する場合

(SELECT * FROM sysobjects WHERE xtype = 'U' AND name like 'vl_enrolledByDate%')

大丈夫だよ。

4

1 に答える 1

0

私は常に次のように条件付きで一時テーブルを削除します。

if OBJECT_ID('tempdb..#temp') is not null
drop table #temp
于 2012-03-12T02:18:56.703 に答える