忘掉这个问题首先选择的值删除,SQL服务器:从临时表
我觉得我应该做更清楚我的问题,提供我的存储刺中我的查询的一些例子
承担我有一个目的地表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:将通过select * from temp表格进入TBLA
DECLARE @DumpSql NVARCHAR(MAX);
SET @DumpSql = 'INSERT INTO TBLA
SELECT * FROM ##TempTable';
EXEC sp_ExecuteSql @DumpSql ;
如步骤2中的问题更详细:
基本上,在我performe删除statment,我发现,我所有的数据丢失,似乎它只是执行第一行只有这DELETE FROM TBLA
......
例如塞纳里奥
之前,我尝试做了删除声明,我试着只是选择了##TempTable
的值,这是正确的。哦,是的,它只有2011-11-04数据
其实我的TBLA
目前已经有2011-11-03和2011-11-02的数据。 PS:我实际上是通过日期值来选择数据的。
这我跑上面的SQL,它的成功......
而且继续比,我打开我的TBLA
和看到的结果。我的天啊!!!!它只有2011-11-04
数据...其余的在哪里?
请注意:
这上面的SQL只是我dyamic存储督促所使用sp_executesql的.. 我的实际数据的一部分,我有表300必须处理和正确共有300台有不同独特indentity
,所以我不能作出Select * From ##Temptable Where id=something
希望这更清楚的问题
感谢你,感谢你的帮助
方面S:
LiangCk
感谢您的回复,但不幸的是,它不能识别的ID,因为它是动态的方式应用。和问题有不同类型的表。 我运行这个SQL里面一个存储的产品 – Worgon
请帮助再次看到我的问题..hopefully它现在更清晰 – Worgon
我已更新一些链接,这将有助于您进一步解决此问题.. –