c# - 存储过程删除查询不起作用。但是当它自己在编辑器中运行而不调用它时它可以正常工作

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

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

如果我在编辑器中执行它并手动分配一个表单名称和一个用户 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();
}

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

最佳答案

我注意到的一个问题是在您的存储过程中您似乎颠倒了参数:

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

应该是

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

关于c# - 存储过程删除查询不起作用。但是当它自己在编辑器中运行而不调用它时它可以正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25316438/

相关文章:

c# - Windows服务启动时如何运行任务?

c# - C#中如何去掉String的最后一个字符?

java - 在下面提到的场景中如何将列表传递给sql查询

大表上的 MySQL 性能问题 - 如何有效地缓存结果?

c# - 使用正则表达式将字符串中的文本替换为分隔符

c# - 嵌套查询的 StackOverflowException,小项目计数

sql - 使用 sql 查询在 Access 中填充从 1980-01-01 到今天的日期列

sql - 在 SELECT 和 ORDER BY 中,COUNT 是否执行两次?

php - 使用 MySql 和 PHP 创建论坛网站时出现问题。不确定如何显示主题

sql - 在两个数据库表中进行循环引用是一种好习惯吗