过程或函数“SP”需要参数“@param”,但未提供该参数
Posted
技术标签:
【中文标题】过程或函数“SP”需要参数“@param”,但未提供该参数【英文标题】:Procedure or function 'SP' expects parameter '@param', which was not supplied 【发布时间】: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" );
.
【参考方案1】:
试试这些代码
SqlParameter returnParameter = cmd.Parameters.Add("@outputparam", DbType.String);
returnParameter.Direction = ParameterDirection.ReturnValue;
改成
cmd.Parameters.Add("@outputparam", DbType.String, ParameterDirection.Output);
和
return cmd.Get<string>("@outputparam");
【讨论】:
以上是关于过程或函数“SP”需要参数“@param”,但未提供该参数的主要内容,如果未能解决你的问题,请参考以下文章