当前位置: 首页 > 面试题库 >

SQL 2008存储过程中的可选where子句/参数?

时修贤
2023-03-14
问题内容

我正在编写一些更新表的代码。根据用户想要执行的操作,它会更新大量的记录,也可能更新较小的记录。描绘因素是组ID。

用户可以选择是更新所有记录的表,还是仅更新具有该groupID的记录。我想对两个实例都使用相同的存储过程,也许在其中有一点逻辑来区分场景。(我不想使用90%相同的代码编写两个存储的proc。)

我不是存储过程的专家,也不知道是否可以传入可选参数,或者如何根据groupID是否存在来动态生成where子句的一部分。欢迎任何建议。

谢谢!


问题答案:

您可以使用此或“或”构造

... WHERE GroupID = ISNULL(@GroupdID, GroupID)


... WHERE GroupID = @GroupdID OR @GroupdID IS NULL


 类似资料:
  • 问题内容: 我有一个表单,用户可以指定各种参数来挖掘某些数据(状态,日期等)。 我可以产生一个查询: 等等。每一个都是可选的(我可以选择带有的所有行,或者带有的所有行,或者带有etc的所有行)。 给定大量参数(全部为可选参数),组成动态存储过程的最佳方法是什么? 我正在处理各种数据库,例如:MySQL,Oracle和SQLServer。 问题答案: 实现此目的的最简单方法之一: 等等。这完全消除了

  • 问题内容: 我有一个带参数的SQL Server 2005存储proc :。 我想根据此参数控制一个子句。 我想获取所有项目(不包括where子句),何时。否则,请包含where子句。 问题答案:

  • 问题内容: 我有一个形式的SQL存储过程 我想向过程传递一个参数(@whereSql),该参数指定整个WHERE子句,但返回以下错误: 能做到吗? 问题答案: 简短的答案是您不能这样做-SQL Server将变量的内容视为VALUE。它不会动态构建要执行的字符串(这就是为什么这是避免SQL注入攻击的 正确 方法)的原因。 您应该尽一切努力避免动态的WHERE,主要是因为这个原因,也是为了提高效率。

  • 但是当我移除EmployeeID参数时,我希望移除过滤器。所以所有的结果都应该显示出来。 我的问题是,在sql查询中传递可选where的正确方式是什么。

  • 我想从sql where语句的列表框中获取所有选中的项,在按钮中我有一个代码 我有一个方法

  • 问题内容: 我正在使用一条语句来添加新记录或更新当前记录。我有多个线程通过多个连接和多个语句(每个线程一个连接和一个语句)来驱动数据库。我一次要批处理50个语句。 我很惊讶在考试中遭到违反。我希望这是不可能的,因为将作为单个事务执行,或者是吗? 我的Java代码如下所示: 查询如下所示: 该错误显示为: 表格上的键是字段上的键。 问题答案: 是原子的,意味着所有更改都已提交或所有更改都已回滚。 在