如何使用C#调用带输出的存储过程

佩里

我有提供输出值的此SQL Server存储过程。请注意,输出值是添加新记录时创建的标识种子。

    @EventNumber varchar(12),
    @inc_date_occurred varchar(10),
    @inc_time_occurred int,
    @inc_location varchar (200),
    @inc_location_exempt bit,
    @inc_case_number varchar(9),
    @Zone varchar(50),
    @inc_school_name varchar(50),
    @inc_special_detail_name varchar(50),
    @Inc_ID int output
AS
BEGIN
    IF @EventNumber IS NOT NULL
       --Start Building a Record that comes in with an Event Number
       INSERT INTO Tbl_Incident(inc_event_number, inc_is_uof, inc_is_comp_via_sup,
                                inc_is_comp_via_psd, inc_date_recvd, inc_date_occurred_start,
                                inc_time_occurred_start, inc_location, inc_location_exempt,
                                inc_case_number, inc_status, inc_comp_complaint_to_psd,
                                inc_synopsis, inc_zone, inc_school_name,
                                inc_special_detail_name, inc_arrest_made, 
                                inc_date_entered, inc_entered_by)

      VALUES (@EventNumber, '1', --inc_is_uof,
              '0', --inc_is_comp_via_sup
              '0', --inc_is_comp_via_sup
              GETDATE(),--inc_date-received,
              CAST(@inc_date_occurred AS DATE),--inc_date_occurred
              --start time conversion
              right(convert(varchar(20), cast(stuff(right('0000' + convert(varchar(4),@inc_time_occurred),4),3,0,':') as datetime),100),7),
              -- end time converted from Military to standard
              @inc_location, @inc_location_exempt, @inc_case_number,
              'OPEN',--@inc_status,
              '0', --
              'This is a for REVIEW ONLY',--synopsis,
              @Zone, @inc_school_name, @inc_special_detail_name,
              '0', --@inc_arrest_made
              GETDATE(), --inc_date_entered
              'SharePoint Transfer'--@inc_entered_by
              )

    SET @Inc_ID = @@IDENTITY

我正在使用此C#代码使用必要的参数调用此过程,并希望获取输出整数。

using (SqlCommand _Incident = new SqlCommand("ocso_InsertIncident", _con))
{
    _Incident.CommandType = CommandType.StoredProcedure;

    // set up parameters
    _Incident.Parameters.AddWithValue("@EventNumber", EventNumber);
    _Incident.Parameters.AddWithValue(@"inc_Date_Occurred", DateTime.Parse("01-10-2017"));
    _Incident.Parameters.AddWithValue("@inc_Time_Occurred", "1535");
    _Incident.Parameters.AddWithValue("@inc_Location", "Web Service Entry");
    _Incident.Parameters.AddWithValue("@inc_location_exempt", 0);
    _Incident.Parameters.AddWithValue("@inc_Case_Number", "2107-123456");
    _Incident.Parameters.AddWithValue("@Zone", "34");
    _Incident.Parameters.AddWithValue("@inc_school_name", DBNull.Value);
    _Incident.Parameters.AddWithValue("@inc_special_detail_name", DBNull.Value);

    // Output value
    SqlParameter inc_ID = new SqlParameter("@ID", DbType.Int16);
    inc_ID.Direction = System.Data.ParameterDirection.Output;
    _Incident.Parameters.Add(inc_ID);

    _Incident.ExecuteNonQuery();

    string inc_id = _cmd.Parameters["@ID"].Value.ToString();
}

代码会生成,但是当我运行它时,调用存储过程的执行时会收到此错误消息

{“过程或函数'ocso_InsertIncident'期望参数'@Inc_ID',但未提供。”}

所以我尝试通过在代码中包含@INC_ID参数来传递一个空值

_Incident.Parameters.AddWithValue("@INC_ID", DBNull.Value);

但是我收到错误消息{“过程或函数ocso_InsertIncident指定了太多参数。”}

我似乎被困住了,有人可以帮忙吗

谢谢

吉兹杰夫

删除此代码

_Incident.Parameters.AddWithValue("@INC_ID", DBNull.Value);

并像这样修改您的代码

SqlParameter inc_ID = new SqlParameter("@INC_ID", DbType.Int16);
                    inc_ID.Direction = System.Data.ParameterDirection.Output;
                    _Incident.Parameters.Add(inc_ID);
                    _Incident.ExecuteNonQuery();

                    string inc_id = _cmd.Parameters["@INC_ID"].Value.ToString();

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何使用 C# 中的 select 调用 MySQL 存储过程

来自分类Dev

C# - 使用类型调用存储过程

来自分类Dev

使用输出参数从C#调用外部AS400存储过程

来自分类Dev

如何在c#中获取存储过程输出参数

来自分类Dev

如何在C#中使用有效的表名检索存储过程输出值

来自分类Dev

如何在C#的存储过程中使用输出参数

来自分类Dev

使用C#使用参数调用SQL Server存储过程

来自分类Dev

从C#调用Oracle插入存储过程

来自分类Dev

如何使用mysql使用输入和输出参数在Entity Framework Core中调用存储过程

来自分类Dev

如何使用输入参数调用存储过程并使用输出参数填充文本框?

来自分类Dev

如何使用C#更改存储过程的此选择代码

来自分类Dev

如何使用准则2在Symfony 2中调用带有输出参数的mysql存储过程?

来自分类Dev

如何使用输出参数在 EF6 中调用存储过程

来自分类Dev

如何使用JDBC调用PostgreSQL存储过程

来自分类Dev

如何使用sqlalchemy调用存储过程

来自分类Dev

如何使用JDBC调用PostgreSQL存储过程

来自分类Dev

如何使用sqlalchemy调用存储过程

来自分类Dev

如何在输出中调用聚合结果的存储过程?

来自分类Dev

如何在C#中获取oracle存储过程标准输出

来自分类Dev

如何在C#中获取oracle存储过程标准输出

来自分类Dev

存储过程调用带位变量的列

来自分类Dev

带列表的MySQL存储过程调用

来自分类Dev

如何在Mule中使用带参数的存储过程

来自分类Dev

TSQL使用C#创建存储过程

来自分类Dev

从SQL存储过程C#加载输出参数

来自分类Dev

在 C# 中捕获嵌套存储过程的输出

来自分类Dev

如何调用带有对象参数的Oracle存储过程以在C#中输入?

来自分类Dev

C#调用MySQL存储过程,函数的最佳方法

来自分类Dev

从C#调用存储过程时出现错误

Related 相关文章

  1. 1

    如何使用 C# 中的 select 调用 MySQL 存储过程

  2. 2

    C# - 使用类型调用存储过程

  3. 3

    使用输出参数从C#调用外部AS400存储过程

  4. 4

    如何在c#中获取存储过程输出参数

  5. 5

    如何在C#中使用有效的表名检索存储过程输出值

  6. 6

    如何在C#的存储过程中使用输出参数

  7. 7

    使用C#使用参数调用SQL Server存储过程

  8. 8

    从C#调用Oracle插入存储过程

  9. 9

    如何使用mysql使用输入和输出参数在Entity Framework Core中调用存储过程

  10. 10

    如何使用输入参数调用存储过程并使用输出参数填充文本框?

  11. 11

    如何使用C#更改存储过程的此选择代码

  12. 12

    如何使用准则2在Symfony 2中调用带有输出参数的mysql存储过程?

  13. 13

    如何使用输出参数在 EF6 中调用存储过程

  14. 14

    如何使用JDBC调用PostgreSQL存储过程

  15. 15

    如何使用sqlalchemy调用存储过程

  16. 16

    如何使用JDBC调用PostgreSQL存储过程

  17. 17

    如何使用sqlalchemy调用存储过程

  18. 18

    如何在输出中调用聚合结果的存储过程?

  19. 19

    如何在C#中获取oracle存储过程标准输出

  20. 20

    如何在C#中获取oracle存储过程标准输出

  21. 21

    存储过程调用带位变量的列

  22. 22

    带列表的MySQL存储过程调用

  23. 23

    如何在Mule中使用带参数的存储过程

  24. 24

    TSQL使用C#创建存储过程

  25. 25

    从SQL存储过程C#加载输出参数

  26. 26

    在 C# 中捕获嵌套存储过程的输出

  27. 27

    如何调用带有对象参数的Oracle存储过程以在C#中输入?

  28. 28

    C#调用MySQL存储过程,函数的最佳方法

  29. 29

    从C#调用存储过程时出现错误

热门标签

归档