Сначала забудь о вопросе,
Я думаю, что мне следует прояснить свой вопрос, предоставив некоторый пример моего запроса в моем сохраненном продукте
Предположим, у меня есть таблица назначения TBLA
и исходная таблица TBLB
.
Шаг 1: я получаю sql из таблицы моей базы данных, например
--I Ran this process in a cursor that @Sql is actually a pass in selected coloum value
DECLARE @Sql NVARCHAR(MAX);
SET @Sql = 'SELECT TBLB.coloumA, TBLB.coloumB... into ##TempTable
FROM TBLB
WHERE CONVERT(VARCHAR(10),Date,120)='2011-04-05'';
EXEC sp_ExecuteSql @sql
Шаг 2: Удаляю данные таблицы назначения с помощьювызов другого sp_ExecuteSql
DECLARE @CheckClear NVARCHAR(MAX);
SET @CheckClear = 'DELETE FROM TBLA WHERE EXISTS(SELECT * FROM ##TempTable)';
EXEC sp_ExecuteSql @CheckClear ;
--This section is my problem describe below.
Шаг 3: Вставить в TBLA, выбрав * из временной таблицы
DECLARE @DumpSql NVARCHAR(MAX);
SET @DumpSql = 'INSERT INTO TBLA
SELECT * FROM ##TempTable';
EXEC sp_ExecuteSql @DumpSql ;
В качестве проблемы более подробно на шаге 2:
По существу, послея выполнил проверку удаления, я обнаружил, что все мои данные отсутствуют, и кажется, что он выполняет только первую строку, это DELETE FROM TBLA
...
Например, senario
Прежде чем попытаться сделатьоператор удаления, я пытаюсь просто выбрать ##TempTable
значение, это правильно.О да, это только данные 2011-11-04
На самом деле мои TBLA
в настоящее время уже имеют данные 2011-11-03 и 2011-11-02.
PS: Я на самом делеВыбор данных по значению даты.
Это я запустил выше sql, его успех ...
И продолжает, я открываю TBLA
и вижу результат.О, МОЙ БОГ!!!!его только есть 2011-11-04
данных ... где остальные ??
ПОЖАЛУЙСТА, ОБРАТИТЕ ВНИМАНИЕ, ЧТО:
Этот выше sql является лишь частью моего динамического хранимого продукта, который использовал sp_executesql .. Мои фактические данные: у меня есть 300 таблиц, которые должны быть обработаны и должным образом всего 300таблицы имеют разные уникальные indentity
, поэтому я не могу сделать Select * From ##Temptable Where id=something
Надеюсь, что это намного яснее вопрос
Спасибо, благодарю вас за помощь
Награды:
LiangCk