【问题标题】:Procedure or function 'sp_InsertContentForhomepage' expects parameter '@company', which was not supplied过程或函数“sp_InsertContentForhomepage”需要参数“@company”,但未提供该参数
【发布时间】:2015-08-14 06:51:11
【问题描述】:

出现错误 -

过程或函数“sp_InsertContentForhomepage”需要参数 '@company',未提供。

我正在尝试插入两个值...我是使用 sp 的新手。

SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["ShoppingConnectionString"].ConnectionString);
con.Open();
string text = FCKeditor.Value;
string company = txtCompany.Text.Trim();
DataSet ds = new DataSet();
SqlCommand cmd = new SqlCommand("sp_InsertContentForhomepage", con);
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.AddWithValue(@text, text);
cmd.Parameters.AddWithValue(@company,company);
cmd.ExecuteNonQuery();
con.Close();

我的存储过程:-

 create PROCEDURE sp_InsertContentForhomepage
   @company    VARCHAR(50),
    @text  VARCHAR(max)

AS
BEGIN

INSERT INTO tbl_HomepageContent (company, text)
VALUES (@company,@text)

END

【问题讨论】:

  • 您可以运行 SQL Profiler 并检查您的代码传递给 SP 的值吗?
  • 缺少引号? cmd.Parameters.AddWithValue("@company",company);
  • @BrendanGreen 确实...如果 OP 对变量使用非字符串类型会很明显...可能作为 stackoverflow.com/questions/254669/… 的副本关闭 :)(也更像是“印刷错误”)。
  • @RahulSingh 我不太确定你是什么意思 @company 不是字符串(因为它与没有 @company 相同):AddWithValue(@company,company);AddWithValue("@company",company);是完全有效的 C# 语句(从 string company; 开始)。我不确定你认为哪个版本不会编译。
  • @RahulSingh 但他的代码示例中有一个名为 company 的变量。如果变量company 包含值“test”,则此AddWithValue(@company, company) 实际上与AddWithValue("test", company) 相同。见msdn.microsoft.com/en-us/library/aa664670.aspx

标签: c# asp.net sql-server-2008 stored-procedures


【解决方案1】:

我觉得你应该这样写,

cmd.Parameters.Add("@text", text);
cmd.Parameters.Add("@company", company);

按照上面的方法试试....

【讨论】:

  • Add 的哪个版本需要带有 ParameterName 和 Value 的两个参数?
  • @RahulSingh - msdn.microsoft.com/en-us/library/… 了解更多信息。也看看这个你会得到更多的想法。 stackoverflow.com/questions/14640094
  • @krishnamohan - 你的简单错误是,你错过了像“@text”这样的引号......它也可以解决你的问题。
  • 您提供了参考链接,但您检查过它们吗? SqlCommand.Parameters.Add 方法的 4 个重载中没有一个接受 parameterName& Value
  • 提问者已经标记为答案,因为它是为他工作的解决方案。那么谁在没有 cmets 的情况下投了反对票?不好!请给点意见。如果您没有任何理由,请不要投反对票。
【解决方案2】:

您检查过string company = txtCompany.Text.Trim(); 中的值吗?确保您没有发送空值。 如果公司不为空,请执行以下操作:

create procedure sp_InsertContentForhomepage
    @company varchar(50),   
    @text varchar(max)
as
begin
    insert into tbl_HomepageContent
    values (@company,@text)
end

我认为你必须发送像cmd.Parameters.AddWithValue("@company", company);这样的值

【讨论】:

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