Excel VBA - exec скрипт для удаления временной таблицы - PullRequest
1 голос
/ 12 марта 2012

Я хочу удалить таблицу # temp при запуске, а затем макрос, правильно ли использовать:

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)

Сервер, например. является 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%')

все хорошо.

1 Ответ

0 голосов
/ 12 марта 2012

Я всегда условно отбрасываю временные таблицы следующим образом:

if OBJECT_ID('tempdb..#temp') is not null
drop table #temp
...