我有一个嵌套的存储过程,可以从第三方应用程序获取一些报告给我的本地应用程序。当我尝试获取显示以下错误的临时表时,存储过程按预期工作并返回结果。
无法确定元数据,因为过程'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"
我如何实现上述任务?