在子过程中创建临时表

时间:2020-05-15 01:02:22

标签: sql sql-server

我渴望在子进程中创建一些SQL Server临时表,以将存储过程分成多个部分,而不是一个大的整体过程。

CREATE PROCEDURE dbo.P422270HRF605CreateTempTables
AS
    IF OBJECT_ID('tempdb..#tmpState') IS NOT NULL
        DROP TABLE #tmpState

    CREATE TABLE #tmpState 
    (
        StateID VARCHAR(8) NOT NULL,
        Include VARCHAR(1) NOT NULL
    )
GO

还有另一个过程调用它,然后使用临时表..

ALTER PROCEDURE Membership.GenerateHRF605Data
    @FromDate DateTime,
    @ToDate   DateTime,
    @MemberNo INT
AS 
BEGIN
    -- create all the temp tables required for HRF 605 processing
    EXEC dbo.P422270HRF605CreateTempTables

    INSERT INTO #tmpState
        SELECT StateID, Include = 'N'
        FROM dbo.States
        UNION
        SELECT 'Overseas', 'N'
        UNION
        SELECT 'Unknown', 'N'

但这似乎在运行时失败:

EXEC [Membership].[GenerateHRF605Data] @FromDate='20190901', @ToDate='20190930', @MemberNo=90001

我收到此错误:

消息208,级别16,状态0,过程成员身份。GenerateHRF605Data,第125行[批处理开始第0行]
无效的对象名称“ #tmpState”。

也许SQL Server不允许在被调用过程中创建临时表并在调用过程中使用它们?

0 个答案:

没有答案