【问题标题】:Procedure or function 'SP' expects parameter '@param', which was not supplied过程或函数“SP”需要参数“@param”,但未提供该参数
【发布时间】: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


【解决方案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");

【讨论】:

    猜你喜欢
    • 2020-03-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多