sql-server - 从存储过程返回值

标签 sql-server vb.net

您好,我正在使用 vs 2008 在 vb.net 中做一个 winforms 应用程序。我有一个只有一个表的数据库,其中有两列和一个存储过程。存储过程应该获取一个输入值,将该值与表中的一列进行匹配,然后从另一列返回相应的值;除了它不。它返回 1 或 0 请谁能告诉我为什么

ALTER PROCEDURE dbo.getgamenumber(@outputnumber bigint OUTPUT,
                                  @inputnumber bigint) 
AS 

  SELECT @outputnumber = ggnumber
    FROM statstable
   WHERE gindex = @inputnumber 

  RETURN  @outputnumber

存储过程是这样调用的

With cmdgetgame
  .CommandType = CommandType.StoredProcedure
  .CommandText = "getgamenumber"
  .Parameters.Add("@outputnumber", SqlDbType.BigInt).Value = outputnumber
  .Parameters("@outputnumber").Direction = ParameterDirection.Output
  .Parameters.AddWithValue("@inputnumber", inputvalue)
  returnvalue = cmd.ExecuteScalar()
End With

感谢所有的帮助。

抱歉让我感到困惑,我的 vb 代码现在看起来像这样

 With cmdgetgame
                .CommandType = CommandType.StoredProcedure
                .CommandText = "getgamenumber"
                .Parameters.Add("@outputnumber", SqlDbType.BigInt).Value = outputnumber
                .Parameters("@outputnumber").Direction = ParameterDirection.Output
                .Parameters.AddWithValue("@inputnumber", inputvalue)
                cmd.ExecuteNonQuery()
                returnvalue = cmdgetgame.Parameters("@outputnumber").Value
            End With

我的存储过程是这样的

ALTER PROCEDURE dbo.getgamenumber
( @outputnumber bigint ,
@inputnumber bigint) 
AS 
    SELECT       ggnumber
    FROM            statstable
    WHERE        (gindex = @inputnumber)

但我仍然没有得到我期望的值。

最佳答案

您似乎试图将 @outputnumber 用作输出参数和返回值。

当您将它设置为输出参数时,您不需要在 VB.NET 中为该参数设置值。

那么,您就不需要 return 语句了。 (无论如何,您不应该在 T-SQL 中使用 RETURN 来获取值)

获取输出值:

cmd.ExecuteNonQuery()
returnvalue = cmdgetgame.Parameters("@outputnumber").Value

关于sql-server - 从存储过程返回值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3907681/

相关文章:

C# Linq-to-SQL 尝试接收多个选择

asp.net - 我可以将 ASP.NET 成员身份与 SQL Server Compact Edition 一起使用吗?

sql - 没有标识列时如何批量插入?

vb.net - 在此LINQ查询中多次使用 “Select”的目的是什么?

vb.net - 使用 VB.net 发送电子邮件

sql - 使用 EXISTS 时关键字附近的语法不正确

SQL 或在第一次检查后停止

.net - 清洗请求防止SQL注入(inject)攻击

ios - Obj-C 和 VB.Net 之间的加密兼容性

c# - 无法针对对象断言