如何将存储过程中的值从SQL返回到c#

时间:2016-10-28 13:03:24

标签: c# sql sql-server

所以我存储的值是我已经完成的学生参考号,而不是我需要在textbox2和textbox 3中返回我的ID和我的DateTime中的值。同时输入并执行该过程。

using (SqlConnection con = new *****))
{
    SqlCommand cmd = con.CreateCommand();
    cmd.CommandText = "Exams_BagCheck_ScanIn";
    {
        cmd.CommandType = CommandType.StoredProcedure;
        cmd.Parameters.AddWithValue("@StudentReference", SqlDbType.VarChar).Value = textBox1.Text;
        cmd.Parameters.AddWithValue("@ID", SqlDbType.Int).Direction = ParameterDirection.ReturnValue;
        con.Open();
        cmd.ExecuteNonQuery();

程序

USE [IFCustom]
GO

DECLARE @return_value Int

EXEC    @return_value = [dbo].[Exams_BagCheck_ScanIn]
        @StudentReference = N'1'

SELECT  @return_value as 'Return Value'

GO

2 个答案:

答案 0 :(得分:3)

您的程序什么都不返回,您需要删除:

SELECT @return_value as 'Return Value'

而是:

RETURN @return_value

(如果您想select,则.ExecuteScalar()会返回值

答案 1 :(得分:1)

如果您只返回一个值,则可以使用

这样:

string some_value = cmd.ExecuteScalar().ToString(); // if it is string

OR

Object some_value = cmd.ExecuteScalar(); // convert it to its repective type.

取代

cmd.ExecuteNonQuery();

// some_value将包含您在过程中选择为SELECT @return_value的值。