【发布时间】:2018-03-29 09:05:21
【问题描述】:
我有来自第三方应用程序的存储过程以获得一些结果。我从第三方存储过程创建了一个存储过程,当我运行我的过程时,它的运行如下所示。
USE [DbName]
GO
DECLARE @return_value int
EXEC @return_value = [dbo].[usrGetBalanceBystore]
@customer = N'045D3CD7-FBF2-4B58-9EAE-EC4EEECA1E57',
@store = N'2F705FF5-DCD0-4DF6-8D78-B1386CE2F64A'
SELECT 'Return Value' = @return_value
GO
因为最后一行"SELECT 'Return Value' = @return_value" 无法将结果显示到gridview。同时尝试将表克隆到临时也显示无法插入嵌套表的错误。
这是我的全部程序
ALTER Proc [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
【问题讨论】:
-
为什么说最后一行是问题?来自数据库的结果是否返回 null 或对象?我认为最后一行应该是:SELECT @return_value as 'Return Value'
-
第三方 SP 是否返回标量值?还是一张桌子?
-
是的,该行仅返回 0。当我运行程序时,我得到 2 行结果。第一行有我想要的行,第二行只有零。
-
您在这里期待什么?我希望看到
0的值是@Return_value,除非SP 设置为返回不同的值。 SP 有没有RETURN命令? -
只需使用
EXEC [dbo].[usrGetBalanceBystore] @customer = N'045D3CD7-FBF2-4B58-9EAE-EC4EEECA1E57', @store = N'2F705FF5-DCD0-4DF6-8D78-B1386CE2F64A'。你对返回值不感兴趣,所以不要捕获它。
标签: c# sql asp.net sql-server