【问题标题】:How To Get Set Value From Stored procedure in C#如何从 C# 中的存储过程中获取设置值
【发布时间】:2015-04-17 04:35:28
【问题描述】:

我有一个客户提供给我的存储过程

喜欢:

ALTER Proc [dbo].[XYZ]
    @Parameter varchar(100),
    @Parameter1 nvarchar(4000) out

   SET @APIString = "Test Test"

我无权更改此程序。

当我通过 C# 执行过程时,我从过程中得到一个 blank 字符串

如何在我的项目中获取@Parameter1 值?

C# 代码:

SqlCommand cmd = new SqlCommand("dbo.XYZ", conn);
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.AddWithValue("@Parameter", Parameter);

cmd.Parameters.Add("@Parameter1", SqlDbType.VarChar,4000);
cmd.Parameters["@Parameter1"].Direction = ParameterDirection.Output;

conn.Open();

SqlDataReader reader = cmd.ExecuteReader();

while (reader.Read())
{
    String = reader["@Parameter1"] != null ? reader["@Parameter1"].ToString() : "";
}

conn.Close();

【问题讨论】:

标签: c# sql-server stored-procedures


【解决方案1】:

@Parameter1 是一个输出参数。您可以像设置输入参数的值一样获取它的值,例如

var cmd = new SqlCommand("dbo.XYZ", con);
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.AddWithValue("@Parameter", inputValue);

// add the output parameter
cmd.Parameters.Add("@Parameter1", SqlDbType.NVarChar).Direction =
    ParameterDirection.Output;

cmd.ExecuteNonQuery();

string parameter1 = (string)cmd.Parameters["@Parameter1"].Value;

您还应该使用ExecuteNonQuery,除非存储过程使用 select 语句返回值。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-16
    • 1970-01-01
    • 2014-11-01
    • 2021-07-23
    • 1970-01-01
    相关资源
    最近更新 更多