SQL Server嵌套存储过程到临时表

时间:2018-03-30 09:59:33

标签: sql sql-server

我有一个嵌套的存储过程,可以从第三方应用程序获取一些报告给我的本地应用程序。当我尝试获取显示以下错误的临时表时,存储过程按预期工作并返回结果。

  

无法确定元数据,因为过程'sysGetBalanceBill'中的语句'INSERT INTO [#TblSrc] EXEC [prcGetReportList] @Src'使用临时表。

此过程存在于第三方应用程序中。

我的存储过程如下所示:

ALTER PROCEDURE [dbo].[usrGetBalanceBystore]
    @Customer VARCHAR(100),
    @Store VARCHAR(100)
AS
BEGIN
    IF NOT EXISTS (SELECT * FROM tblRpBase 
                   WHERE idrpTable = '2B1A7150-FD1B-4D7B-A9AC-8AB7C83CC4AC')
    BEGIN
        INSERT INTO tblRpBase 
            SELECT * 
            FROM tblRpBaseDummy 
            WHERE idrpTable = '2B1A7150-FD1B-4D7B-A9AC-8AB7C83CC4AC'
    END

    EXECUTE sysGetBalanceBill '1/1/2018 0:0:0.0', '3/26/2018 23:59:59.998',
                              @Customer, @Store
END

我试图像这样插入临时表:

DECLARE @TempTable1 TABLE 
        (       
            [InvNum] [INT],   
            [InvDate] [DATETIME] ,   
            [Customer] [UNIQUEIDENTIFIER] ,   
            [CustName] [VARCHAR](255),   
            [CustLName] [VARCHAR](255),   
            [InvTotal] [FLOAT]
      )

INSERT INTO @TempTable1
    SELECT * 
    FROM Openrowset('SQLNCLI','Server=Name;Database=DbName;Uid=sa;Pwd=Password',
  'EXECUTE [DbName1].[dbo].[usrGetBalanceBystore] "00000000-0000-0000-0000-000000000000",
 "00000000-0000-0000-0000-000000000000"')

SELECT * 
FROM @TempTable1 
WHERE CustName = 'ABC'

这行代码返回空表

 SELECT * 
        FROM Openrowset('SQLNCLI','Server=Name;Database=DbName;Uid=sa;Pwd=Password',
      'EXECUTE [DbName1].[dbo].[usrGetBalanceBystore] "00000000-0000-0000-0000-000000000000",
     "00000000-0000-0000-0000-000000000000"')

如果我只运行此程序,我可以找到结果

EXECUTE [DbName1].[dbo].[usrGetBalanceBystore] "00000000-0000-0000-0000-000000000000",
         "00000000-0000-0000-0000-000000000000"

我如何实现上述任务?

0 个答案:

没有答案