Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

switch en T-SQL

68 views
Skip to first unread message

Carlos Hidalgo

unread,
Dec 17, 2007, 4:00:02 PM12/17/07
to
Hola

En mi DB tengo un SP donde de acuerdo al valor de una variable, decide que
consulta ejecutar, pero actualmente lo hago con puro IF-ELSE y la verdad es
algo engorroso, quisiera saber si existe algo como el SWITCH para hacer
selecciones multiples o me lo tengo que aventar con ELSEIF

desde ya mucha gracias...

Maxi Accotto

unread,
Dec 17, 2007, 6:38:01 PM12/17/07
to
Hola, Tsql no es un lenguaje de programacion, lo que usted dispone como IF
es la unica opcion para lo que esta buscando

--

-----------------------------
Microsoft MVP SQLServer
www.sqltotalconsulting.com
-------------------------------

"Carlos Hidalgo" <webm...@arji.edu.mx> escribió en el mensaje de
noticias:2595DE39-4A01-4ED0...@microsoft.com...

Pepe

unread,
Dec 18, 2007, 4:41:02 AM12/18/07
to
Puedes utilizar un CASE, buscala en los BOL

Sintaxis
Función CASE sencilla:

CASE input_expression
WHEN when_expression THEN result_expression
[ ...n ]
[
ELSE else_result_expression
]
END

Función CASE de búsqueda:

CASE
WHEN Boolean_expression THEN result_expression
[ ...n ]
[
ELSE else_result_expression
]
END

"Carlos Hidalgo" <webm...@arji.edu.mx> escribió en el mensaje

news:2595DE39-4A01-4ED0...@microsoft.com...

Carlos Hidalgo

unread,
Dec 18, 2007, 9:32:44 AM12/18/07
to
Ok, gracias :(

"Maxi Accotto" <max...@infovia.com.ar.sacame> escribió en el mensaje de
noticias news:ucGHdXQQ...@TK2MSFTNGP04.phx.gbl...

Carlos Hidalgo

unread,
Dec 18, 2007, 9:33:28 AM12/18/07
to
Ok, gracias, según leí, el CASE solo funciona sobre un selec en particular y
yo lo que quiero es decidir que consulta utilizar basado en una variable de
entrada..

"Pepe" <pe...@noquierospam.com> escribió en el mensaje de noticias
news:u57ScoVQ...@TK2MSFTNGP05.phx.gbl...

Gux (MVP)

unread,
Dec 18, 2007, 10:07:00 AM12/18/07
to
Atención que el CASE no es un switch. CASE solamente puede ser usada como una
función en una senetcnia pero no es una instrucción de control de flujo de
ejecución, que es lo que el amigo necesita.

--
Gustavo Larriera, Microsoft MVP
https://mvp.support.microsoft.com/profile/gux
--
Este mensaje se proporciona tal como es, sin garantías de ninguna clase.

Salvador Ramos

unread,
Dec 18, 2007, 10:06:22 AM12/18/07
to
La solución es la que te ha indicado Gux

--
Un saludo
Salvador Ramos
---------------------------------------------------
www.helpdna.net (información sobre SQL Server y Microsoft .Net)
www.helpdna.net/acerca_de_salvador_ramos.htm
---------------------------------------------------

"Carlos Hidalgo" <webm...@arji.edu.mx> escribió en el mensaje

news:2BDB123E-74AE-4E8E...@microsoft.com...

Gux (MVP)

unread,
Dec 18, 2007, 10:08:01 AM12/18/07
to
Maxi, cómo es eso de que T-SQL no es un lenguaje de programación?
Qué estás fumando hoy? :-)

--
Gustavo Larriera, Microsoft MVP
https://mvp.support.microsoft.com/profile/gux
--
Este mensaje se proporciona tal como es, sin garantías de ninguna clase.

Carlos M. Calvelo

unread,
Dec 18, 2007, 10:40:11 AM12/18/07
to
Hola Gustavo, Hola Maxi,

On 18 dec, 16:08, Gux (MVP) <Gux...@discussions.microsoft.com> wrote:
> Maxi, cómo es eso de que T-SQL no es un lenguaje de programación?
> Qué estás fumando hoy? :-)
>

Ah! Por fin!
Ya me estaba tardando un poco que alguien reaccionase a eso. :-)

Saludos,
Carlos

Maxi

unread,
Dec 18, 2007, 11:28:04 AM12/18/07
to
Bueno no entra en la categoria de lenguaje de programacion para mi ;-) es
mas un scripting que otra cosa :-) pero bueno, lo que realmente queria decir
es que no tiene el poder de un lenguaje de programacion como c# o vb.net o
java por ejemplo, le faltan cosas muy basicas, de hecho en 2005 se incorporo
la utilizacion de CLR y es para darle mas poder a TSQL (las cosas que no se
pueden hacer con este "lenguaje"

--

-------------------------------------------------------------------------
Microsoft M.V.P en SQLServer
SQLTotal Consulting - Servicios en SQLServer
Email: max...@gmail.com.nospam
-----------------------------------------------------------------------
"Gux (MVP)" <Gux...@discussions.microsoft.com> escribió en el mensaje
news:E979527D-3D7F-4D5F...@microsoft.com...

Carlos M. Calvelo

unread,
Dec 18, 2007, 12:40:37 PM12/18/07
to
Hola Maxi,

On 18 dec, 17:28, "Maxi" <maxi...@infovia.com.ar.sacame> wrote:
> Bueno no entra en la categoria de lenguaje de programacion para mi ;-) es
> mas un scripting que otra cosa :-)

Por ser o no 'scripting' no se es menos o mas lenguaje de
programación.


> pero bueno, lo que realmente queria decir
> es que no tiene el poder de un lenguaje de programacion como c# o vb.net o
> java por ejemplo, le faltan cosas muy basicas, de hecho en 2005 se incorporo
> la utilizacion de CLR y es para darle mas poder a TSQL (las cosas que no se
> pueden hacer con este "lenguaje"

Como que el CLR tampoco tiene el poder de SQL y también le faltan
cosas muy básicas cuando hablamos de programación declarativa y
de gestión de datos que en SQL son normales.
Y.. si, SQL (sin la 'T') es un lenguaje de programación.
Quizás estés diciendo que no consideras lenguanges de programación
aquellos de propósito específico (no general). Pero si lo son.

Saludos,
Carlos

Maxi

unread,
Dec 19, 2007, 7:26:08 AM12/19/07
to
Carlos, a lo que me refiero es que TSQL no tiene el poder de un lenguaje de
programacion como podria ser .NET, esta muy lejos de eso, ojo con esto no
quiero decir que TSQL es malo ni mucho menos, sino que ha sido pensado para
otra cosa. Hay muchas veces que los desarrolladores pensamos que TSQL es un
lenguaje potente y queremos hacer cosas complicadas las cuales pueden
terminar o en cursores o bien en otro tipo de tecnicas lentas.
De hecho la inclusion de CLR es justamente para potenciar lo que TSQL no es
muy bueno y darle mayor poder a los objetos que podemos generar.

--

-------------------------------------------------------------------------
Microsoft M.V.P en SQLServer
SQLTotal Consulting - Servicios en SQLServer
Email: max...@gmail.com.nospam
-----------------------------------------------------------------------

"Carlos M. Calvelo" <c_ja...@hotmail.com> escribió en el mensaje
news:757a155d-9c24-4795...@i3g2000hsf.googlegroups.com...

Leonardo Azpurua

unread,
Dec 19, 2007, 8:28:13 PM12/19/07
to

"Gux (MVP)" <Gux...@discussions.microsoft.com> escribió en el mensaje
news:147ADB20-368A-489D...@microsoft.com...

> Atención que el CASE no es un switch. CASE solamente puede ser usada como
> una
> función en una senetcnia pero no es una instrucción de control de flujo de
> ejecución, que es lo que el amigo necesita.

Aunque si usas el CASE para asignarle a una variable de texto, y luego usas
esa variable como argumento para llamar a sp_executesql obtienes exactamente
el mismo resultado. Siempre estás limitado con respecto a los selectores
múltiples de los lenguajes de uso general, pero podría servir como respuesta
a la pregunta original.


Salud!


0 new messages