Instrucción vacía en T-SQL


¿Hay una palabra clave de sentencia vacía en T-SQL en Sql Server 2005 o posterior? Algo así como una sentencia NULL en PL / SQL.

Author: Ivan Chaer, 2010-07-13

4 answers

No. No hay un equivalente de "No operación".

  • Para un proc almacenado, tendrías al menos SET NOCOUNT ON.
  • un IF/ELSE, si una condición está vacía omite

De lo contrario, ¿por qué preguntas por favor? Para ser precisos, ¿cuál es el punto?

 1
Author: gbn,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-06-13 20:24:53

Puedes declarar una etiqueta para no hacer nada.

DECLARE @value INT

IF @value IS NULL
BEGIN
no_op1: 
END
 38
Author: Martin Smith,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-11-13 13:41:34

Lo feo sucede a veces. Creo que es un uso válido. En una estructura de ramificación de decisión larga / complicada con varias declaraciones if else, algunas de esas declaraciones pueden contener condiciones en las que específicamente no desea ninguna acción. Tampoco desea que esas condiciones caigan a través de hacer el defecto de lo contrario, donde se realiza cierto trabajo. En ese caso, es un uso válido.

Aquí hay dos maneras de hacer esto - ver B y 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!'

Tenga en cuenta que este es un ejemplo demasiado simplificado. Es mejor utilizado para la legibilidad cuando las condiciones son complejas.

 8
Author: JM.,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-04-20 21:52:51

También creo que a veces hay usos legítimos para un script de nada (scripts generados automáticamente, por ejemplo).

Aunque es un hilo viejo, pondré mis dos centavos. Creo que declarar una variable es una de las declaraciones más benignas que puedes usar. La declaración ni siquiera aparece en los planes de ejecución:

IF (@variable = 0)
BEGIN
    DECLARE @placeHolder BIT;
END
 7
Author: Michael J Swart,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-08-08 20:21:11