¿Se puede usar case para llamar a un SP o función?

Hola.
Quería saber si en un stored procedure, se puede usar un case para que cuando compare llame a una función para que traiga un valor o llamar a otro stored.
Por favor, de ser así darme un ejemplo.
Sino alguna manera de hacer lo siguiente.
Ejemplo
select case @cod_concepto
when '04A'
THEN SET @TOTAL = dbo.FORMULAA( @tipoliq, @mes, @años, @codcolegio, @subcole, @leg) WHEN '37A' THEN 'NOS'
ELSE
END
Aclaraciones, esto no funciona.
Tengo todas las variables declaradas, y lo parámetros están correcto.
Solo hay error de sintaxis.
Saludos y gracias
Leandro

1 Respuesta

Respuesta
1
¿Has probado a poner?
select @TOTAL=case @cod_concepto
when '04A' THEN dbo.FORMULAA( @tipoliq, @mes, @años, @codcolegio, @subcole, @leg) WHEN '37A' THEN 'NOS' else null end
Hola pude llamar a la función,
Ahora antes de llamar a la función tendría que traer un total de una consulta, al poner el select me da error.
Otra cosa también es que necesito que el when sea así
when '37L' or '37V' or (n veces) then
SET @TOTAL = CASE @cod_concepto
WHEN '04A' THEN
dbo. Formula (@tipoliq, @mes, @años, @codcolegio, @subcole, @leg)
WHEN '37V' or '37Z' THEN
dbo.FormulaB (@tipoliq, @mes, @años, @codcolegio, @subcole, @leg, @cant, @hsfin,@cod_concepto)
end
Espero que puedas ayudarme
Saludos
emperador20
A ver, no pretenderás que te repase todas las instrucciones sql que te falla ¿no? ;-).
Revisa la instrucción comparala con la que yo te dí consulta el Help del sql.
No es por nada, sino jamás aprenderás, si te limitas al corta pega, nunca podrás superarte.
Saludos y no lo tomes a mal.
Hola, no el código lo puse para que imágenes un poco el código.
La pregunta es si después del then se puede poner por ejemplo
then select * from table
Set @tot = 1 + 1
seria un case compuesto por varias lineas.
Saludos y gracias
Si te lías deja de usar el SET, hazlo todo con SELECT, dentro de la select puedes poner las variables igual que con SET. En el ejemplo que pones (que por cierto no tiene mucho sentido) puedes poner:
then select @tot = 1 + 1,* from table
Saludos.
PD.: Si te contesté a la pregunta inicial (qué por lo visto sí), lo lógico es finalizarla y puntuarla. Y si quieres hacer otra, a mí o a otro experto hacer OTRA, ¿OK? ;-).
Pongo excelente porque yo fui un experto alguna vez. Pero lo hacia por gusto no por puntos...
Tienes que ser más tolerante y la pregunta no me la respondiste. Gracias por tu tiempo

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas