[英]Insert into temp table from exec call stored procedure
我有一個存儲過程,在其中將表插入臨時表,然后使用光標逐行讀取該臨時表:
USE [TEST_DB]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[returnValidationFailures]
AS
BEGIN
SET NOCOUNT ON;
SELECT TOP 0 * INTO TempTbl FROM USER
DECLARE cursor1 CURSOR FAST_FORWARD FOR
SELECT *
FROM USER
OPEN cursor1
INSERT INTO TempTbl
EXEC ('fetch next from cursor1')
WHILE @@FETCH_STATUS = 0
INSERT INTO TempTbl
EXEC ('fetch next from cursor1')
CLOSE cursor1
DEALLOCATE cursor1
SELECT *
FROM TempTbl
DROP TABLE TempTbl
END
我想在這里通過類似這樣的參數發送表名:
@TableNameParam varchar(10)
然后插入到臨時表中,如下所示:
SELECT TOP 0 * INTO TempTbl FROM @TableNameParam
DECLARE cursor1 CURSOR FAST_FORWARD FOR
SELECT *
FROM @TableNameParam
這是行不通的(顯然)。 但是我嘗試的所有其他方法都行不通。 有什么辦法可以設置EXEC調用的數據,例如:
EXEC ('SELECT * FROM ' + @TableNameParam
' WHERE STATUS=1')
進入臨時表?
注意: 我不知道表結構。
我不太確定我了解您的最終范圍是什么,但是我的建議是使用基於集合的方法。
要直接回答您的問題,應考慮使用臨時表(#TempTable)而不是表變量(@TempTable)。
EXEC ('SELECT * FROM ' + #TableNameParam + ' WHERE STATUS=1')
如何在臨時表中獲取數據?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.