在存储过程中调用另一个存储过程的问题?
CREATE PROCEDURE [dbo].[spMRViewToProc]
@FromDbName varchar(50),
@ToDbName varchar(50)
AS
exec( 'SELECT '+@FromDbName+ '.dbo.materialrequest.*, ISNULL( '+@ToDbName+ '.dbo.materialrequestContrast.ModifyDate,
'+@FromDbName+ '.dbo.materialrequest.InputDate) AS ModifyDate
FROM '+@FromDbName+ '.dbo.materialrequest LEFT OUTER JOIN
'+@ToDbName+ '.dbo.materialrequestContrast ON
'+@FromDbName+ '.dbo.materialrequest.MaterialRequestID = '+@ToDbName+ '.dbo.materialrequestContrast.MaterialRequestID ')
GO
CREATE PROCEDURE [dbo].[spTest]
@FromDbName varchar(50),
@ToDbName varchar(50)
AS
???
EXEC( 'INSERT INTO MRViewToProc EXEC spMRViewToProc '+@FromDbName+ ', '+@ToDbName+ ' ')
???
GO
spMRViewToProc存储过程返回结果集的数据列非常多,我想把spMRViewToProc存储过程返回的结果集存储到一个临时表里,一开始我建了一个表MRViewToProc,结构和spMRViewToProc存储过程返回结果集的结构完全一样,可是执行时出现错误,服务器: 消息 213,级别 16,状态 5,行 1
插入错误: 列名或所提供值的数目与表定义不匹配。我又看了好几遍发现结构一样,
请问有没有什么方法实现把spMRViewToProc存储过程返回结果集存储到一个临时表里,而不用一一定义每个列的类型????
------解决方案--------------------CREATE PROCEDURE [dbo].[spTest]
@FromDbName varchar(50),
@ToDbName varchar(50)
AS
exec( 'INSERT INTO MRViewToProc EXEC spMRViewToProc ' ' '+@FromDbName+ ' ' ', ' ' '+@ToDbName+ ' ' ' ')
------解决方案--------------------嗯,平时引用变量用一个单引号,但是如果是包含在一组单引号中的话,那么里面的单引号就要变成 ' '来转义