SQL Server 存储过程返回值到gridview
Posted
技术标签:
【中文标题】SQL Server 存储过程返回值到gridview【英文标题】:SQL Server stored procedure Return value to gridview 【发布时间】: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'
。你对返回值不感兴趣,所以不要捕获它。
【参考方案1】:
请在 BEGIN 之后尝试添加一个 设置无计数;
然后尝试运行第三方应用程序。
片段: ... 开始 设置无计数; 如果不存在(从 tblRpBase 中选择 * ...
【讨论】:
Najeeb:当您直接从 SSMS 运行存储过程时,您是只得到一行结果还是第二行全为零? 第二行只有一个零。第一行我有我的结果。但在 c# 数据集内部返回的是空的。 如果你试试:grvResult.DataSource = ds.Tables[0]; ?以上是关于SQL Server 存储过程返回值到gridview的主要内容,如果未能解决你的问题,请参考以下文章
Sql Server - 有啥方法可以找到哪些存储过程返回集合,哪些不返回?
SQL SERVER里面如何在存储过程里面获取另一个存储过程所返回的表的数据?