【发布时间】:2013-08-15 17:13:46
【问题描述】:
什么时候适合在存储过程中使用SELECT *?
【问题讨论】:
-
为什么你认为使用
SELECT *是合适的? -
我同意这是一种不好的做法,但在某些情况下,您需要 SP 的结果会随着表的变化而变化。在数据字典中思考。
标签: sql-server tsql stored-procedures triggers
什么时候适合在存储过程中使用SELECT *?
【问题讨论】:
SELECT *是合适的?
标签: sql-server tsql stored-procedures triggers
将SELECT * 用于存储过程的输出是不好的做法。当基础表发生变化时,SELECT * 查询的输出将发生变化,从而导致潜在问题。如果 SP 为 Web 应用程序提供数据,则该 Web 应用程序的一部分可能会中断。如果 SP 由批处理执行,则该进程可能会失败,从而导致其他问题,包括愤怒的 DBA。
SELECT * 正常的一种情况是在IF EXISTS 检查的上下文中:
IF EXISTS (SELECT * FROM dbo.myTable)
BEGIN
-- do something
END
编辑:但是,您可以轻松地使用SELECT 1 来满足IF EXISTS 检查。
【讨论】:
If Exists (Select 1/0 From Table) ... 编译并工作。