忘掉這個問題首先選擇的值刪除,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
我已更新一些鏈接,這將有助於您進一步解決此問題.. –