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 存储过程返回意外值

Sql Server - 有啥方法可以找到哪些存储过程返回集合,哪些不返回?

SQL SERVER里面如何在存储过程里面获取另一个存储过程所返回的表的数据?

SQL SERVER里面如何在存储过程里面获取另一个存储过程所返回的表的数据?

hibernate 使用sql server的存储过程时没有返回值