T-SQL中的空语句

时间:2010-07-13 07:09:08

标签: sql-server tsql

Sql Server 2005或更新版本的T-SQL中是否有空语句关键字?类似于PL / SQL中的NULL语句。

5 个答案:

答案 0 :(得分:42)

您可以声明标签不执行任何操作。

DECLARE @value INT

IF @value IS NULL
BEGIN
no_op1: 
END

答案 1 :(得分:10)

有时会发生丑陋。我相信他们是有效的用途。在具有多个if else语句的冗长/复杂的决策分支结构中,其中一些语句可能包含您特别不希望采取任何操作的条件。某些工作已完成,您也不希望这些条件通过默认情况下执行。在这种情况下,它是有效的用途。

以下是两种方法 - 参见B和C

Declare @status as char(1) 
set @status = 'D'

If (@status = 'A')
    select 'Great!'

Else if (@status = 'B')
begin
    if null=null select null -- predicate never resolves true
end

Else if (@status = 'C')
    set @status = @status  -- set a variable to itself 

Else
    select 'Needs work!'

请注意,这是一个过于简化的示例。当条件复杂时,最好用于可读性。

答案 2 :(得分:7)

我也相信有时候合法使用无脚本(例如自动生成的脚本)。

虽然这是一个老线程,但我会把我的两分钱。我认为声明变量是您可以使用的最良性的陈述之一。该声明甚至没有出现在执行计划中:

IF (@variable = 0)
BEGIN
    DECLARE @placeHolder BIT;
END

答案 3 :(得分:0)

没有。没有“无操作”的等价物。

  • 对于存储过程,您至少有SET NOCOUNT ON
  • 对于IF/ELSE,如果条件为空则省略

否则,你为什么要问?确切地说,重点是什么?

答案 4 :(得分:0)

while 1 = 0 break

在功能上我不能使用:

if 1 = 0 print ''
if 1 = 0 set nocount on
if 1 = 0 waitfor delay '00:00'
if 1 = 0 throw 50000, '', 10
if 1 = 0 select 1
if 1 = 0 return

标签或变量不能声明两次。