【发布时间】:2020-12-14 18:21:58
【问题描述】:
我在 C# 代码中遇到了这个错误。在 SQL Server 中执行存储过程是没有问题的。
过程或函数“SP”需要参数“@outputparam”,但未提供。
public string function1(int param1, string param2)
{
SqlDataAdapter sqladapter = new SqlDataAdapter();
SqlConnection conn = new SqlConnection(strcon);
SqlCommand cmd;
cmd = new SqlCommand("SP", conn);
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.AddWithValue("@param1", param1);
cmd.Parameters.AddWithValue("@param2", param2);
SqlParameter returnParameter = cmd.Parameters.Add("@outputparam", SqlDbType.NVarChar);
returnParameter.Direction = ParameterDirection.ReturnValue;
conn.Open();
cmd.ExecuteNonQuery();
conn.Close();
return cmd.Parameters["@outputparam"].Value.ToString();
}
CREATE PROCEDURE [dbo].[SP]
(@param1 int,
@param2 nvarchar(50),
@outputparam nvarchar(20) OUTPUT)
【问题讨论】:
-
那不是返回值,那是输出参数。更改参数类型。
-
我强烈建议不要使用
addwithvalue -
提示:您可以使用带有
Add的显式初始化程序来处理其他选项,例如sqlCommand.Parameters.Add( new SqlParameter() { ParameterName = "@Filename", SqlDbType = SqlDbType.VarChar, Size = 256, Direction = System.Data.ParameterDirection.InputOutput, Value = "Foo.bar" } );.
标签: c# sql-server tsql stored-procedures