存储过程删除查询不起作用。但是当它在编辑器中运行时并没有被调用它可以正常工作

时间:2014-08-14 19:48:48

标签: c# sql database sql-server-2008 c#-4.0

我使用SQL Server Management Studio编写了这个存储过程。

如果我在编辑器中执行它并手动分配一个formname和一个用户ID,它可以正常清理不匹配任何内容的设置

ALTER PROCEDURE [dbo].[Handover_DeleteBadParams] 
     @UserID varchar(10), 
     @formName varchar (30)
as
begin
   with deletethese as
   (     
       select 
           UserID, Param 
       from
           BI.dbo.Handover_RDL_SavedSettings userSettings
       left join
           BI.dbo.Handover_UI form on Form.FormName = userSettings.FormName 
                                   and userSettings.Param = Form.ItemValue
       where 
          userSettings.FormName = @UserID
          and userSettings.UserID = @formName
          and Form.FormName IS NULL)
   Delete from S
   from bi.dbo.Handover_RDL_SavedSettings S
   join deletethese D on S.UserId = D.UserID and S.Param = D.Param;
end

然后我使用C#

调用存储过程
using (SqlCommand kill = new SqlCommand("Handover_DeleteBadParams",cc))
{
    kill.CommandType = CommandType.StoredProcedure;
    kill.Parameters.Add("@UserID", SqlDbType.VarChar).Value = userID;
    kill.Parameters.Add("@formName", SqlDbType.VarChar).Value = working_form_name;

    kill.Connection.Open();
    kill.ExecuteNonQuery();
    kill.Connection.Close();
}

我在执行过程中没有任何错误或任何反馈......我在这里做错了什么?

2 个答案:

答案 0 :(得分:2)

我注意到的一个问题是,在您的存储过程中,您的参数似乎已反转:

 where userSettings.FormName = @UserID
 and userSettings.UserID = @formName

应该是

 where userSettings.FormName =  @formName
 and userSettings.UserID = @UserID

答案 1 :(得分:0)

由于它执行时没有任何错误,但根本没有删除任何内容,因此我们必须断定您的userID和/或working_form_name不包含您认为他们所做的值。

在调用之前在C#中设置断点,并检查值以验证这是否是问题。