Funciones

26/10/2005 - 14:33 por RAMENCAS | Informe spam
Saludos a todos

Alguno tiene idea de como crear una funcion con CREATE FUNCTION que retorne
un valor del campo de una tabla?

De antemano muchas gracias

saludos



Rafael Antonio Mendoza Castillo
ramencas@softwaredevenezuela.com
ramencas@gmail.com

Solo MSN: ramencas@hotmail.com

Preguntas similare

Leer las respuestas

#1 Lautaurus
26/10/2005 - 15:05 | Informe spam
Inline Table-valued Functions

CREATE FUNCTION [ owner_name. ] function_name
( [ { @parameter_name [AS] scalar_parameter_data_type [ = default ]
} [ ,...n ] ] )

RETURNS TABLE

[ WITH < function_option > [ [,] ...n ] ]

[ AS ]

RETURN [ ( ] select-stmt [ ) ]





RAMENCAS escribió:
Saludos a todos

Alguno tiene idea de como crear una funcion con CREATE FUNCTION que retorne
un valor del campo de una tabla?

De antemano muchas gracias

saludos



Respuesta Responder a este mensaje
#2 Carlos Sacristán
26/10/2005 - 15:06 | Informe spam
En los BOL vienen ejemplos de cómo hacer funciones de usuario...


Un saludo

-
"Sólo sé que no sé nada. " (Sócrates)

"RAMENCAS" escribió en el mensaje
news:
Saludos a todos

Alguno tiene idea de como crear una funcion con CREATE FUNCTION que


retorne
un valor del campo de una tabla?

De antemano muchas gracias

saludos



Rafael Antonio Mendoza Castillo



Solo MSN:


Respuesta Responder a este mensaje
#3 Daniel
26/10/2005 - 17:05 | Informe spam
Te paso unas funciones que cree en un sistema. Espero que te sirvan de
ejemplo.

Saludos

Daniel



FUNCION QUE RETORNA UN VALOR INT
CREATE function [UsuarioEncargadoSector](@IdSector int,@idUsuario as int,
@idAcceso as int )
returns int
as
begin
declare @ret int
select @ret =count(DestinoSectorNoConformidad.IdSectorEmpresa)
FROM DestinoSectorNoConformidad INNER JOIN
SectorEmpresa ON
DestinoSectorNoConformidad.IdSectorEmpresa = SectorEmpresa.id INNER JOIN
UsuarioSectorEmpresa ON SectorEmpresa.id =
UsuarioSectorEmpresa.IdSectorEmpresa INNER JOIN
Sucursales ON SectorEmpresa.idSucursal = Sucursales.id
INNER JOIN
EmpresaPropia ON Sucursales.idEmpresaPropia =
EmpresaPropia.id INNER JOIN
Empresas ON EmpresaPropia.IdEmpresa = Empresas.id
WHERE (UsuarioSectorEmpresa.IdUsuario = idUsuario) AND
(DestinoSectorNoConformidad.IdSectorEmpresa = @idSector)
and UsuarioSectorEmpresa.Id in
(SELECT UsuarioSectorEmpresa.Id
FROM NivelUsuario INNER JOIN
Accesos ON NivelUsuario.id = Accesos.IdNivelUsuario
INNER JOIN
NivelUsuarioSector ON NivelUsuario.id =
NivelUsuarioSector.IdNivelUsuario INNER JOIN
UsuarioSectorEmpresa ON
NivelUsuarioSector.IdUsuarioSectorEmpresa = UsuarioSectorEmpresa.Id
WHERE (Accesos.id = @idAcceso) AND (Accesos.Permiso >0))
return @ret
end



FUNCION QUE RETORNA UNA TABLA
==CREATE function [f_OrigenNoConformidades] (@idPrograma int)
RETURNS @Pendientes TABLE (id int,idUsuario int,idOrigen int)
as
begin
insert into @pendientes (id,Idusuario,idOrigen)

SELECT DISTINCT
Noconformidades.id,UsuarioSectorEmpresa.IdUsuario,OrigenNoConformidad.IdUsuarioSector
from NoConformidades inner join
OrigenNoConformidad on
NoConformidades.id=OrigenNoConformidad.idNoConformidad inner join
UsuarioSectorEmpresa on UsuarioSectorEmpresa.Id =
OrigenNoConformidad.IdUsuarioSector
AnalisisNoConformidad)

union all
SELECT distinct
NoConf.id,UsuarioSectorEmpresa.IdUsuario,UsuarioSectorEmpresa.id
FROM NivelUsuario INNER JOIN
Accesos ON NivelUsuario.id = Accesos.IdNivelUsuario
INNER JOIN
NivelUsuarioSector ON NivelUsuario.id =
NivelUsuarioSector.IdNivelUsuario INNER JOIN
UsuarioSectorEmpresa ON
NivelUsuarioSector.IdUsuarioSectorEmpresa = UsuarioSectorEmpresa.Id inner
join
(SELECT Noconformidades.id,UsuarioSectorEmpresa.IdSectorEmpresa
from NoConformidades inner join
OrigenNoConformidad on
NoConformidades.id=OrigenNoConformidad.idNoConformidad inner join
UsuarioSectorEmpresa on UsuarioSectorEmpresa.Id =
OrigenNoConformidad.IdUsuarioSector
) as NoConf on NoConf.IdSectorEmpresa=UsuarioSectorEmpresa.IdSectorEmpresa
wherE (Accesos.IdPrograma = @idPrograma) AND (Accesos.Permiso >0)
return
end

-

FUNCION QUE RETORNA TABLA Y CONSULTA OTRAS FUNCIONES
=
CREATE function [f_EstadosNC] ()
RETURNs @Estado TABLE (idNoConformidad int,IdEstado INT)
as
begin
insert into @Estado (idNoConformidad,idestado)

select id ,
CASE
WHEN Resp.Estado is not null and Resp.Estado=0 THEN 5
WHEN Anal.Estado is null THEN 1
WHEN Acci.Estado is null THEN 2
WHEN Veri.Estado is null THEN 3
WHEN Resu.Estado is null THEN 4
else 6
END as idEstados
from NoConformidades as NC left outer join
f_EstadoRespuestasNC() as Resp on Resp.idNoConformidad=NC.id left outer
join
f_EstadoAnalisisNC() as Anal on Anal.idNoConformidad=NC.id left outer join
f_EstadoAccionNC() as Acci on Acci.idNoConformidad=NC.id left outer join
f_EstadoVerificacionNC() as Veri on Veri.idNoConformidad=NC.id left outer
join
f_EstadoResultadosNC() as Resu on Resu.idNoConformidad=NC.id

return
end


"RAMENCAS" escribió en el mensaje
news:
Saludos a todos

Alguno tiene idea de como crear una funcion con CREATE FUNCTION que
retorne
un valor del campo de una tabla?

De antemano muchas gracias

saludos



Rafael Antonio Mendoza Castillo



Solo MSN:


Respuesta Responder a este mensaje
#4 Miguel Egea
31/10/2005 - 17:36 | Informe spam
Ojo con esto, una función que devuelve el campo de una tabla suena a lookup,
es decir a busqueda de registro por clave y no permite al query optimizer
hacer bien su trabajo. ¿estás seguro que lo que quieres hacer no se puede
hacer sin UDF's? Cuentanoslo e intentamos ayudarte.


Miguel Egea
Visita mi web http://www.portalsql.com
SQL Server MVP, Mentor
Solid Quality Learning
http://www.SolidQualityLearning.com
"Solid Quality Learning is the trusted global provider of advanced education
and solutions for the entire Microsoft database platform"



"Daniel" wrote in message
news:%23NQx%
Te paso unas funciones que cree en un sistema. Espero que te sirvan de
ejemplo.

Saludos

Daniel



FUNCION QUE RETORNA UN VALOR INT
> CREATE function [UsuarioEncargadoSector](@IdSector int,@idUsuario as int,
@idAcceso as int )
returns int
as
begin
declare @ret int
select @ret =count(DestinoSectorNoConformidad.IdSectorEmpresa)
FROM DestinoSectorNoConformidad INNER JOIN
SectorEmpresa ON
DestinoSectorNoConformidad.IdSectorEmpresa = SectorEmpresa.id INNER JOIN
UsuarioSectorEmpresa ON SectorEmpresa.id =
UsuarioSectorEmpresa.IdSectorEmpresa INNER JOIN
Sucursales ON SectorEmpresa.idSucursal =
Sucursales.id INNER JOIN
EmpresaPropia ON Sucursales.idEmpresaPropia =
EmpresaPropia.id INNER JOIN
Empresas ON EmpresaPropia.IdEmpresa = Empresas.id
WHERE (UsuarioSectorEmpresa.IdUsuario = idUsuario) AND
(DestinoSectorNoConformidad.IdSectorEmpresa = @idSector)
and UsuarioSectorEmpresa.Id in
(SELECT UsuarioSectorEmpresa.Id
FROM NivelUsuario INNER JOIN
Accesos ON NivelUsuario.id = Accesos.IdNivelUsuario
INNER JOIN
NivelUsuarioSector ON NivelUsuario.id =
NivelUsuarioSector.IdNivelUsuario INNER JOIN
UsuarioSectorEmpresa ON
NivelUsuarioSector.IdUsuarioSectorEmpresa = UsuarioSectorEmpresa.Id
WHERE (Accesos.id = @idAcceso) AND (Accesos.Permiso >0))
return @ret
end



FUNCION QUE RETORNA UNA TABLA
==> CREATE function [f_OrigenNoConformidades] (@idPrograma int)
RETURNS @Pendientes TABLE (id int,idUsuario int,idOrigen int)
as
begin
insert into @pendientes (id,Idusuario,idOrigen)

SELECT DISTINCT
Noconformidades.id,UsuarioSectorEmpresa.IdUsuario,OrigenNoConformidad.IdUsuarioSector
from NoConformidades inner join
OrigenNoConformidad on
NoConformidades.id=OrigenNoConformidad.idNoConformidad inner join
UsuarioSectorEmpresa on UsuarioSectorEmpresa.Id =
OrigenNoConformidad.IdUsuarioSector
AnalisisNoConformidad)

union all
SELECT distinct
NoConf.id,UsuarioSectorEmpresa.IdUsuario,UsuarioSectorEmpresa.id
FROM NivelUsuario INNER JOIN
Accesos ON NivelUsuario.id = Accesos.IdNivelUsuario
INNER JOIN
NivelUsuarioSector ON NivelUsuario.id =
NivelUsuarioSector.IdNivelUsuario INNER JOIN
UsuarioSectorEmpresa ON
NivelUsuarioSector.IdUsuarioSectorEmpresa = UsuarioSectorEmpresa.Id inner
join
(SELECT Noconformidades.id,UsuarioSectorEmpresa.IdSectorEmpresa
from NoConformidades inner join
OrigenNoConformidad on
NoConformidades.id=OrigenNoConformidad.idNoConformidad inner join
UsuarioSectorEmpresa on UsuarioSectorEmpresa.Id =
OrigenNoConformidad.IdUsuarioSector
) as NoConf on
NoConf.IdSectorEmpresa=UsuarioSectorEmpresa.IdSectorEmpresa
wherE (Accesos.IdPrograma = @idPrograma) AND (Accesos.Permiso >0)
return
end

-

FUNCION QUE RETORNA TABLA Y CONSULTA OTRAS FUNCIONES
=>
CREATE function [f_EstadosNC] ()
RETURNs @Estado TABLE (idNoConformidad int,IdEstado INT)
as
begin
insert into @Estado (idNoConformidad,idestado)

select id ,
CASE
WHEN Resp.Estado is not null and Resp.Estado=0 THEN 5
WHEN Anal.Estado is null THEN 1
WHEN Acci.Estado is null THEN 2
WHEN Veri.Estado is null THEN 3
WHEN Resu.Estado is null THEN 4
else 6
END as idEstados
from NoConformidades as NC left outer join
f_EstadoRespuestasNC() as Resp on Resp.idNoConformidad=NC.id left outer
join
f_EstadoAnalisisNC() as Anal on Anal.idNoConformidad=NC.id left outer
join
f_EstadoAccionNC() as Acci on Acci.idNoConformidad=NC.id left outer join
f_EstadoVerificacionNC() as Veri on Veri.idNoConformidad=NC.id left outer
join
f_EstadoResultadosNC() as Resu on Resu.idNoConformidad=NC.id

return
end


"RAMENCAS" escribió en el mensaje
news:
Saludos a todos

Alguno tiene idea de como crear una funcion con CREATE FUNCTION que
retorne
un valor del campo de una tabla?

De antemano muchas gracias

saludos



Rafael Antonio Mendoza Castillo



Solo MSN:






email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida