sql - 在子过程中创建临时表
问题描述
我热衷于在子进程中创建一些 SQL Server 临时表,以将存储过程分解为多个部分,而不是一个大的单一进程。
IE
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,过程 Membership.GenerateHRF605Data,第 125 行 [批处理开始行 0]
无效的对象名称“#tmpState”。
也许 SQL Server 不允许在调用过程中创建临时表并在调用过程中使用它们?
解决方案
推荐阅读
- javascript - 为什么在将图像加载到画布时使用 style.display = 'none'
- azure - 我无法在 Azure 容器注册表中选择图像
- javascript - mongoose mongodb - 删除所有条件为真的地方,除了一个
- c - Wno-pointer-arith 标志在不同 gcc 版本之间的处理方式不同
- excel - 如何防止用户在 Google 表格中使用 Excel 电子表格
- reactjs - 如何设置抽屉组件中未显示的初始屏幕?
- matlab - 在 MATLAB 中索引一个更大的向量
- symfony - JMSSerializer 事件不适用于具体类型
- load-balancing - 如何使用重定向配置 Wildfly 负载平衡
- java - Android Studio:找不到方法