Sql server 临时表问题并合并两个存储过程的结果
目标 我有两个存储过程,我正在尝试将它们的结果合并到一个结果集中(我觉得现在是一个很好的时机来说明它们不能在任何列上合并) 我一直在四处寻找,解决方案似乎是使用临时表。然而,虽然我可以很好地创建这个过程,但当我调用它时,我得到一个错误,即临时表无效 我知道本地和全局临时表和会话。但是,如果调用创建表/会话的存储过程,我不确定为什么会出现此错误 感谢帮助解决问题 存储过程:Sql server 临时表问题并合并两个存储过程的结果,sql-server,tsql,stored-procedures,Sql Server,Tsql,Stored Procedures,目标 我有两个存储过程,我正在尝试将它们的结果合并到一个结果集中(我觉得现在是一个很好的时机来说明它们不能在任何列上合并) 我一直在四处寻找,解决方案似乎是使用临时表。然而,虽然我可以很好地创建这个过程,但当我调用它时,我得到一个错误,即临时表无效 我知道本地和全局临时表和会话。但是,如果调用创建表/会话的存储过程,我不确定为什么会出现此错误 感谢帮助解决问题 存储过程: ALTER PROCEDURE usp_returnReadBook @DateStart DATETIME = N
ALTER PROCEDURE usp_returnReadBook
@DateStart DATETIME = NULL,
@DateEnd DATETIME = NULL
AS
INSERT INTO #tempRead
EXECUTE [dbo].[usp_line] @DateStart,@DateEnd
INSERT INTO #tempRead
EXECUTE [dbo].[usp_line2] @DateStart,@DateEnd
SELECT * FROM #tempRead
EXEC [dbo].usp_returnReadBook @DateStart = N'2020/08/01',@DateEnd = N'2020/12/01'
调用过程:
ALTER PROCEDURE usp_returnReadBook
@DateStart DATETIME = NULL,
@DateEnd DATETIME = NULL
AS
INSERT INTO #tempRead
EXECUTE [dbo].[usp_line] @DateStart,@DateEnd
INSERT INTO #tempRead
EXECUTE [dbo].[usp_line2] @DateStart,@DateEnd
SELECT * FROM #tempRead
EXEC [dbo].usp_returnReadBook @DateStart = N'2020/08/01',@DateEnd = N'2020/12/01'
如果我能得到一些帮助,让我的存储过程返回两个存储过程的组合结果,我将不胜感激
关于您需要定义#临时表:
ALTER PROC usp_returnReadBook
@DateStart DATETIME = NULL,
@DateEnd DATETIME = NULL
AS
BEGIN
CREATE TABLE #tempRead(col1 type1, col2 type2);
INSERT INTO #tempRead(col1, col2) EXECUTE [dbo].[usp_line] @DateStart,@DateEnd;
INSERT INTO #tempRead(col1, col2) EXECUTE [dbo].[usp_line2] @DateStart,@DateEnd;
SELECT * FROM #tempRead;
END
表定义必须与存储过程输出匹配。您需要定义#temp table:
ALTER PROC usp_returnReadBook
@DateStart DATETIME = NULL,
@DateEnd DATETIME = NULL
AS
BEGIN
CREATE TABLE #tempRead(col1 type1, col2 type2);
INSERT INTO #tempRead(col1, col2) EXECUTE [dbo].[usp_line] @DateStart,@DateEnd;
INSERT INTO #tempRead(col1, col2) EXECUTE [dbo].[usp_line2] @DateStart,@DateEnd;
SELECT * FROM #tempRead;
END
表定义必须与存储过程输出匹配。延迟名称解析将允许创建过程。该表必须在运行时存在-它不存在,并且会导致运行时执行错误(为了将来的参考,请始终发布准确完整的错误消息)。考虑到涉及的名称,这似乎是一个延迟的名称解析,它将允许创建过程。该表必须在运行时存在-它不存在,并且会导致运行时执行错误(为了将来的参考,请始终发布准确完整的错误消息)。考虑到涉及的名称,这似乎是一个