Funcion que devuelva un campo de una tabla

30/11/2005 - 13:35 por nEk | Informe spam
Hola soy novato en esto y no me acaba de salir... estoy intentando hacer una
función que recibe un parametro en este caso un id de una tabla y me devuelva
un campo.
Lo que tengo hecho es lo siguiente:

CREATE FUNCTION prueba (@pid int) RETURN TABLE
AS
BEGIN
RETURN (SELECT
CASE when Subv.Subv1='Transferencia' then
Subv.Subv1
else
CASE when subv.subv2=subv.subv3 then
Subv.Subv1 + ' ' + LOWER(Subv.Subv3)
else
Subv.Subv1 + ' ' + LOWER(Subv.Subv2) + ' ' + LOWER(Subv.Subv3)
end
end
AS Subvencion
FROM Subv
WHERE idSubv=@pid)
END

Cuál seria la forma correcta?

Gracias x tu tiempo!

Preguntas similare

Leer las respuestas

#1 Alejandro Mesa
30/11/2005 - 15:07 | Informe spam
nEk,

No es mi intencion ofender con este comentario, pero cada vez que tengo que
dirigirme a alguna persona con estos alias me siento como estuviese hablando
con una pared. Por que sera que algunos tienden a esconder sus nombres?

Las funciones tipo tabla inline, no necesitan begin ... end para encerrar el
cuerpo de la funcion.

CREATE FUNCTION prueba (
@pid int
)
RETURN TABLE
AS
RETURN (
SELECT
CASE
when Subv.Subv1='Transferencia' then Subv.Subv1
when Subv.Subv2=Subv.Subv3 then Subv.Subv1 + ' ' + LOWER(Subv.Subv3)
else Subv.Subv1 + ' ' + LOWER(Subv.Subv2) + ' ' + LOWER(Subv.Subv3)
end AS Subvencion
FROM
dbo.Subv
WHERE
idSubv=@pid
)
go


AMB
"nEk" wrote:

Hola soy novato en esto y no me acaba de salir... estoy intentando hacer una
función que recibe un parametro en este caso un id de una tabla y me devuelva
un campo.
Lo que tengo hecho es lo siguiente:

CREATE FUNCTION prueba (@pid int) RETURN TABLE
AS
BEGIN
RETURN (SELECT
CASE when Subv.Subv1='Transferencia' then
Subv.Subv1
else
CASE when subv.subv2=subv.subv3 then
Subv.Subv1 + ' ' + LOWER(Subv.Subv3)
else
Subv.Subv1 + ' ' + LOWER(Subv.Subv2) + ' ' + LOWER(Subv.Subv3)
end
end
AS Subvencion
FROM Subv
WHERE idSubv=@pid)
END

Cuál seria la forma correcta?

Gracias x tu tiempo!

Respuesta Responder a este mensaje
#2 Alejandro Mesa
30/11/2005 - 15:17 | Informe spam
Se me olvido comentar que si el valor a retornar es unico, entonces no
necesitas devolver una tabla, mas bien seria una funcion escalar.

CREATE FUNCTION prueba (
@pid int
)
RETURN @s varchar(128)
AS
begin

SELECT
@s = CASE
when Subv.Subv1='Transferencia' then Subv.Subv1
when Subv.Subv2=Subv.Subv3 then Subv.Subv1 + ' ' + LOWER(Subv.Subv3)
else Subv.Subv1 + ' ' + LOWER(Subv.Subv2) + ' ' + LOWER(Subv.Subv3)
end
FROM
dbo.Subv
WHERE
idSubv=@pid

return (@s)

end
go


AMB

"Alejandro Mesa" wrote:

nEk,

No es mi intencion ofender con este comentario, pero cada vez que tengo que
dirigirme a alguna persona con estos alias me siento como estuviese hablando
con una pared. Por que sera que algunos tienden a esconder sus nombres?

Las funciones tipo tabla inline, no necesitan begin ... end para encerrar el
cuerpo de la funcion.

CREATE FUNCTION prueba (
@pid int
)
RETURN TABLE
AS
RETURN (
SELECT
CASE
when Subv.Subv1='Transferencia' then Subv.Subv1
when Subv.Subv2=Subv.Subv3 then Subv.Subv1 + ' ' + LOWER(Subv.Subv3)
else Subv.Subv1 + ' ' + LOWER(Subv.Subv2) + ' ' + LOWER(Subv.Subv3)
end AS Subvencion
FROM
dbo.Subv
WHERE
idSubv=@pid
)
go


AMB
"nEk" wrote:

> Hola soy novato en esto y no me acaba de salir... estoy intentando hacer una
> función que recibe un parametro en este caso un id de una tabla y me devuelva
> un campo.
> Lo que tengo hecho es lo siguiente:
>
> CREATE FUNCTION prueba (@pid int) RETURN TABLE
> AS
> BEGIN
> RETURN (SELECT
> CASE when Subv.Subv1='Transferencia' then
> Subv.Subv1
> else
> CASE when subv.subv2=subv.subv3 then
> Subv.Subv1 + ' ' + LOWER(Subv.Subv3)
> else
> Subv.Subv1 + ' ' + LOWER(Subv.Subv2) + ' ' + LOWER(Subv.Subv3)
> end
> end
> AS Subvencion
> FROM Subv
> WHERE idSubv=@pid)
> END
>
> Cuál seria la forma correcta?
>
> Gracias x tu tiempo!
>
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida