如何从 C# 中的存储过程中获取设置值
How To Get Set Value From Stored procedure in C#
我有一个客户提供给我的存储过程
喜欢:
ALTER Proc [dbo].[XYZ]
@Parameter varchar(100),
@Parameter1 nvarchar(4000) out
SET @APIString = "Test Test"
我无权更改此程序。
当我通过 C# 执行过程时,我从过程
中得到一个 空白 字符串
如何在我的项目中获取 @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();
@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
,除非存储过程 returns 值带有 select 语句。
我有一个客户提供给我的存储过程
喜欢:
ALTER Proc [dbo].[XYZ]
@Parameter varchar(100),
@Parameter1 nvarchar(4000) out
SET @APIString = "Test Test"
我无权更改此程序。
当我通过 C# 执行过程时,我从过程
中得到一个 空白 字符串如何在我的项目中获取 @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();
@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
,除非存储过程 returns 值带有 select 语句。