我渴望在子进程中创建一些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不允许在被调用过程中创建临时表并在调用过程中使用它们?