为什么C#代码没有从存储过程中返回值

佩里

我正在尝试使用如下所示的存储过程从数据库中提取一条数据。

USE [PSD]
GO
/****** Object:  StoredProcedure [dbo].[ocso_GetNextDTEventNumber]    Script Date: 1/19/2017 10:12:19 AM ******/
SET ANSI_NULLS ON
GO
  SET QUOTED_IDENTIFIER ON
GO

ALTER PROCEDURE [dbo].[ocso_GetNextDTEventNumber] 
    @EventNumber varchar(15) OUTPUT
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;

--increment last number by 1
UPDATE LU_EVENT_NUMBERS SET evn_last_number = evn_last_number + 1 where evn_year = Year(GetDate())
--return event number to caller

    --Get the next event number for all incidents
SELECT @EventNumber = evn_comp_formatted_next_num from LU_EVENT_NUMBERS where evn_year = Year(GetDate())

END

我使用此SQL代码测试此过程

DECLARE @NewEventNumber varchar(15)
Execute dbo.ocso_GetNextDTEventNumber
@EventNumber = @NewEventNumber OUTPUT;
Print convert(varchar(15),@NewEventNumber)

我得到了我期望的结果。现在,当我尝试在我的C#代码中获取结果时,如下所示:

public string GetEventNumber(string enumber)
        {
            string results;

            SqlConnection _con = new SqlConnection();
            _con.ConnectionString =
                "Data Source=ops-devsql;" +
                "Initial Catalog=PSD;" +
                "User id=****;" +
                "Password=****;";
            _con.Open();

            {
                using (SqlCommand _cmd = new SqlCommand("ocso_GetNextDTEventNumber", _con))
                {
                    _cmd.Parameters.Add("@NewEventNumber", SqlDbType.VarChar, 15)
                                   .Direction = ParameterDirection.Output;
                    _cmd.ExecuteNonQuery();

                    results = _cmd.Parameters["@NewEventNumber"].Value.ToString();
                   //results = (string)_cmd.Parameters["@NewEventNumber"].Value.ToString();
                    return results;
                }
            }
        }

我得到一个空字符串。为什么这不起作用?

蒂姆·施密特(Tim Schmelter)

您忘记了告诉命令您要执行存储过程:

using (SqlCommand _cmd = new SqlCommand("ocso_GetNextDTEventNumber", _con))
{
   _cmd.CommandType = CommandType.StoredProcedure;
   //...
}

如果未指定,则采用默认值Text(因此是简单的sql查询)。我猜您某处有一个空的,Try....Catch因为这会导致异常。

您还应该使用相同的参数名称:

_cmd.Parameters.Add("@EventNumber", SqlDbType.VarChar, 15).Direction = ParameterDirection.Output;
_cmd.ExecuteNonQuery();
results = _cmd.Parameters["@EventNumber"].Value.ToString();

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

尝试从必须返回值的C#形式的存储过程中查找值

来自分类Dev

如何从Windows窗体C#中的存储过程中获取返回值

来自分类Dev

为什么我不能处理存储过程返回值是c#?

来自分类Dev

如何从存储过程中获取返回值

来自分类Dev

如何从存储过程中获取返回值

来自分类Dev

为什么在C#中未处理Delegate中的返回值时没有编译器错误抛出?

来自分类Dev

(C#)为什么收到消息“并非所有代码路径都返回值”

来自分类Dev

如何在数据库上下文中运行没有C#返回值的存储过程?

来自分类Dev

调用参数化的存储过程,该过程在C#中返回值

来自分类Dev

调用存储过程时,在C#中获取返回值和一组记录

来自分类Dev

不从ASP Classic中的存储过程中捕获返回值

来自分类Dev

如何从实体框架的存储过程中获取返回值?

来自分类Dev

使用ExecuteSqlCommand(使用Entity Framework)从存储过程中获取返回值

来自分类Dev

如何正确地从调用存储过程中捕获返回值

来自分类Dev

如何从实体框架的存储过程中获取返回值?

来自分类Dev

从存储过程中获取返回值并在程序中使用它

来自分类Dev

如何从存储过程中的 EXEC(Query) 获取返回值

来自分类Dev

为什么Rust在主函数中没有返回值,以及无论如何如何返回值?

来自分类Dev

为什么没有从函数返回值?

来自分类Dev

为什么finger没有非零的返回值?

来自分类Dev

为什么没有返回值而是给出 null

来自分类Dev

如何从子过程中的函数返回值?

来自分类Dev

当未指定return语句时,为什么C ++没有默认构造返回值?

来自分类Dev

有没有办法从案例内的存储过程返回值?

来自分类Dev

为什么特定的比较会从SQL Server存储过程中返回记录,但是包含相同值的IN子句什么都不返回呢?

来自分类Dev

(带有Oracle数据库的C#应用程序)在存储过程中返回参数

来自分类Dev

为什么Psycopg2在存储过程中返回元组列表?

来自分类Dev

将存储过程的返回值存储在变量中

来自分类Dev

将存储过程的返回值存储在变量中

Related 相关文章

  1. 1

    尝试从必须返回值的C#形式的存储过程中查找值

  2. 2

    如何从Windows窗体C#中的存储过程中获取返回值

  3. 3

    为什么我不能处理存储过程返回值是c#?

  4. 4

    如何从存储过程中获取返回值

  5. 5

    如何从存储过程中获取返回值

  6. 6

    为什么在C#中未处理Delegate中的返回值时没有编译器错误抛出?

  7. 7

    (C#)为什么收到消息“并非所有代码路径都返回值”

  8. 8

    如何在数据库上下文中运行没有C#返回值的存储过程?

  9. 9

    调用参数化的存储过程,该过程在C#中返回值

  10. 10

    调用存储过程时,在C#中获取返回值和一组记录

  11. 11

    不从ASP Classic中的存储过程中捕获返回值

  12. 12

    如何从实体框架的存储过程中获取返回值?

  13. 13

    使用ExecuteSqlCommand(使用Entity Framework)从存储过程中获取返回值

  14. 14

    如何正确地从调用存储过程中捕获返回值

  15. 15

    如何从实体框架的存储过程中获取返回值?

  16. 16

    从存储过程中获取返回值并在程序中使用它

  17. 17

    如何从存储过程中的 EXEC(Query) 获取返回值

  18. 18

    为什么Rust在主函数中没有返回值,以及无论如何如何返回值?

  19. 19

    为什么没有从函数返回值?

  20. 20

    为什么finger没有非零的返回值?

  21. 21

    为什么没有返回值而是给出 null

  22. 22

    如何从子过程中的函数返回值?

  23. 23

    当未指定return语句时,为什么C ++没有默认构造返回值?

  24. 24

    有没有办法从案例内的存储过程返回值?

  25. 25

    为什么特定的比较会从SQL Server存储过程中返回记录,但是包含相同值的IN子句什么都不返回呢?

  26. 26

    (带有Oracle数据库的C#应用程序)在存储过程中返回参数

  27. 27

    为什么Psycopg2在存储过程中返回元组列表?

  28. 28

    将存储过程的返回值存储在变量中

  29. 29

    将存储过程的返回值存储在变量中

热门标签

归档