SQL Server - ¿Aplicar funcion de multiples valores en un Select en SQL Server?

 
Vista:

¿Aplicar funcion de multiples valores en un Select en SQL Server?

Publicado por Jaze P. (5 intervenciones) el 11/07/2013 23:14:49
Tengo este proceso pero en 4 funciones que al aplicarla en un select si funciona validado y probado, pero por no quere tener almancenadas muchas funciones estoy intentando crear una funcion que aloje estas 4, pero si me la acepta y guarda la funcione pero no he podido aplicarla en un select ya que como que no me deja aplicar mas valores en el select de la funciona.
++++++++++++++++++++++++++++++++++++++…
CODIGO DE LA FUNCION ALMACENADA:
++++++++++++++++++++++++++++++++++++++…
ALTER FUNCTION [dbo].[JAPF_ServiceAll] ((@CP varchar(60))

RETURNS int
AS
BEGIN
DECLARE @Tipo smallint
/**************Seleccionando Numero 1********************/
IF @Tipo = 1
-- Add the T-SQL statements to compute the return value here
SET @CP = (
SELECT CASE
WHEN @CP LIKE ('%/%')
THEN
(SELECT dbo.JAPF_FnSplit(@CP,'/',1))
ELSE
@CP
END
)
/**************Seleccionando Numero 2********************/
ELSE IF @Tipo = 2
SET @CP = (
SELECT CASE
WHEN (SELECT dbo.JAPF_FnSplit(@CP,'/',2)) IS NULL
THEN
CASE
WHEN @CP LIKE ('%/%')
THEN
(SELECT dbo.JAPF_FnSplit(@CP,'/',1))
ELSE
@CP
END
ELSE
(SELECT dbo.JAPF_FnSplit(@CP,'/',2))
END
)
/**************Seleccionando Numero 3********************/
ELSE IF @Tipo = 3
SET @CP = (
SELECT CASE
WHEN (SELECT dbo.JAPF_FnSplit(@CP,'/',3)) IS NULL
THEN
CASE
WHEN (SELECT dbo.JAPF_FnSplit(@CP,'/',2)) IS NULL
THEN
CASE
WHEN @CP LIKE ('%/%')
THEN
(SELECT dbo.JAPF_FnSplit(@CP,'/',1))
ELSE
@CP
END
ELSE
(SELECT dbo.JAPF_FnSplit(@CP,'/',2))
END
ELSE
(SELECT dbo.JAPF_FnSplit(@CP,'/',3))
END
)
/**************Seleccionando Numero 4********************/
ELSE IF @Tipo = 4
SET @CP = (
SELECT CASE
WHEN (SELECT dbo.JAPF_FnSplit(@CP,'/',4)) IS NULL
THEN
CASE
WHEN (SELECT dbo.JAPF_FnSplit(@CP,'/',3)) IS NULL
THEN
CASE
WHEN (SELECT dbo.JAPF_FnSplit(@CP,'/',2)) IS NULL
THEN
CASE
WHEN @CP LIKE ('%/%')
THEN
(SELECT dbo.JAPF_FnSplit(@CP,'/',1))
ELSE
@CP
END
ELSE
(SELECT dbo.JAPF_FnSplit(@CP,'/',2))
END
ELSE
(SELECT dbo.JAPF_FnSplit(@CP,'/',3))
END

ELSE
(SELECT dbo.JAPF_FnSplit(@CP,'/',4))
END
)
/*************************************…
-- Return the result of the function
RETURN (@CP)

END
++++++++++++++++++++++++++++++++++++++…

Aqui con el IF intento hacer que al seleccionar algun numero o opcion ya especificado en la funcion me corra el proceso que corresponde, en un select intente poner:

Al poner por ejemplo

dbo.JAPF_ServiceAll
(dbo.JerarquiaTipoServicio
(servicio.cvetiposervicio(1)),

donde (1) aqui especifico el numero de opcion que quiero que corra de la FUCTION pero marca error
intente ponerla tambien asi:

dbo.JAPF_ServiceAll(1)
(dbo.JerarquiaTipoServicio
(servicio.cvetiposervicio),

dbo.JAPF_ServiceAll
(dbo.JerarquiaTipoServicio
(servicio.cvetiposervicio)1),

dbo.JAPF_ServiceAll
(dbo.JerarquiaTipoServicio
(servicio.cvetiposervicio)(1),

y tampoco funciona, pero lo que si funciona es si lo pongo de esta forma:

dbo.JAPF_ServiceAll(1),

Pero este me arroja el campo vacio por que no le especifico en que campo quiero que corra la funcion.

Y esta otra:

(SELECT dbo.JerarquiaTipoServicio
(servicio.cvetiposervicio)),

Osea poniendolos separados si jala, pero no se como unirlos y poder especificar la opcion de 1 al 4 del IF para que haga el proceso que necesito.

Tienen alguna idea de como hacerlo o como poderlo juntar, no importa si la solcion es quitando el IF y utilizando alguna alternativa...

Ya que quiero realizar esto, ya que si lo dejo todo en un selec si me muestra la informacion que quiero, pero se ve demasiado revuelto el SELECT que quienes lo utilizaran o utilizaramos se vera mucho o revuelto y quiero que a simple vista se vea sencillo y lo mas laborioso se quede en las funciones almacenadas del SQL.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Isaias Islas Gonzalez
Val: 3.250
Oro
Ha mantenido su posición en SQL Server (en relación al último mes)
Gráfica de SQL Server

¿Aplicar funcion de multiples valores en un Select en SQL Server?

Publicado por Isaias Islas Gonzalez (4558 intervenciones) el 16/07/2013 22:33:31
Pues no entiendo que es lo que deseas hacer, lo que si me queda claro, que DEFINES @Tipo, pero nunca le asignas un valor, ¿entonces como es que haces la pregunta sobre el 'valor' que tiene?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

¿Aplicar funcion de multiples valores en un Select en SQL Server?

Publicado por Jaze P. (5 intervenciones) el 23/07/2013 16:40:02
es que el Tipo se define asi, para cuando yo quiero ejecutar la funcion entre "()" ponlo el numero del IF que corresponde y correo el IF o parte de la funcion que quiero.

No quiero que siempre corra todo, solo una parte dependiendo el numero que ponga despues de la funcion.

Se que si funciona asi, ya que he creado ya otro donde es valor "1" ó "0" donde defino que 1 si me aparezca y "0" que no muestra nada, pero en este ocasion son multiples valores
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

¿Aplicar funcion de multiples valores en un Select en SQL Server?

Publicado por Ing. Zeus Alberto Paez Renteria (1 intervención) el 16/07/2013 22:42:28
Porque mejor no creas un Store Procedure, asi podras crear tus funciones.

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

¿Aplicar funcion de multiples valores en un Select en SQL Server?

Publicado por Jaze P. (5 intervenciones) el 23/07/2013 16:43:19
Por creo que es mas conveniente con funciones, por ejemplo ahorita como lo tengo es que cada tipo o cada if o tengo cada uno en una Funciona almacenada diferentes y corre y si sirve, pero lo que queria saber como ponerlo todo junto para no tener tantas funciones para un mismo fin..

El Procedure no opte por que si este lo adapto a un procedure no lo correo por tener procesos dentro de otro procesos (algo asi como que no lo reconoce) y aparte que no se puede o crreo que no se puede definir en un SP variables indeferentes que ya en el query le asignad el valor que quieres en el SP creo que son valores fijo para el proceso.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar