【问题标题】:When is it appropriate to use "SELECT *" in a Stored Procedure? [closed]什么时候适合在存储过程中使用“SELECT *”? [关闭]
【发布时间】:2013-08-15 17:13:46
【问题描述】:

什么时候适合在存储过程中使用SELECT *

【问题讨论】:

标签: sql-server tsql stored-procedures triggers


【解决方案1】:

SELECT * 用于存储过程的输出是不好的做法。当基础表发生变化时,SELECT * 查询的输出将发生变化,从而导致潜在问题。如果 SP 为 Web 应用程序提供数据,则该 Web 应用程序的一部分可能会中断。如果 SP 由批处理执行,则该进程可能会失败,从而导致其他问题,包括愤怒的 DBA。

SELECT * 正常的一种情况是在IF EXISTS 检查的上下文中:

IF EXISTS (SELECT * FROM dbo.myTable)
BEGIN
  -- do something
END

编辑:但是,您可以轻松地使用SELECT 1 来满足IF EXISTS 检查。

【讨论】:

  • select null 也一样
  • 是的,您在 Select 中放入的内容并不重要。 If Exists (Select 1/0 From Table) ... 编译并工作。
猜你喜欢
  • 2013-01-28
  • 2011-09-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-11-13
  • 2013-09-27
  • 1970-01-01
相关资源
最近更新 更多