当前位置: 代码迷 >> Sql Server >> 在存储过程中调用另一个存储过程的有关问题
  详细解决方案

在存储过程中调用另一个存储过程的有关问题

热度:60   发布时间:2016-04-27 17:46:51.0
在存储过程中调用另一个存储过程的问题?
CREATE   PROCEDURE   [dbo].[spMRViewToProc]  
@FromDbName   varchar(50),
@ToDbName   varchar(50)
AS
exec( 'SELECT   '[email protected]+ '.dbo.materialrequest.*,   ISNULL( '[email protected]+ '.dbo.materialrequestContrast.ModifyDate,  
            '[email protected]+ '.dbo.materialrequest.InputDate)   AS   ModifyDate
FROM   '[email protected]+ '.dbo.materialrequest   LEFT   OUTER   JOIN
            '[email protected]+ '.dbo.materialrequestContrast   ON  
            '[email protected]+ '.dbo.materialrequest.MaterialRequestID   =   '[email protected]+ '.dbo.materialrequestContrast.MaterialRequestID ')
GO

CREATE   PROCEDURE   [dbo].[spTest]  
@FromDbName   varchar(50),
@ToDbName   varchar(50)
AS
???
EXEC( 'INSERT   INTO   MRViewToProc   EXEC   spMRViewToProc   '[email protected]+ ',   '[email protected]+ ' ')
???
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 ' ' '[email protected]+ ' ' ', ' ' '[email protected]+ ' ' ' ')
------解决方案--------------------
嗯,平时引用变量用一个单引号,但是如果是包含在一组单引号中的话,那么里面的单引号就要变成 ' '来转义
  相关解决方案