簡體   English   中英

從exec調用存儲過程插入到臨時表中

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM