Blog gratis
Reportar
Editar
¡Crea tu blog!
Compartir
¡Sorpréndeme!
img
img

 

 

SQL Server
Blog. (Apuntes y Recopilaciones) por Norman M. Pardell

img
img

Funciones SQL Server. Funciones escalares y funciones con valores de tabla.

SQL Server 2008 admite las funciones definidas por el usuario y las funciones del sistema integradas. Al igual que las funciones en los lenguajes de programación, las funciones definidas por el usuario de son rutinas que aceptan parámetros, realizan una acción, como un cálculo complejo, y devuelven el resultado de esa acción como un valor. El valor devuelto puede ser un valor escalar único o un conjunto de resultados.

 

Funciones escalares.

Las funciones escalares son las más parecidas a las funciones que se utilizan dentro de los lenguajes de programación. Se utilizan básicamente para cálculos básicos matemáticos ya que devuelven un único valor escalar.

ejemplo: Calculo del IVA:

--Creamos la funcion conel nombre IVA

-- Indicamos el parámetro de entrada y tipo: @cantidad money

Create function IVA (@cantidad money)

Returns money -- Indicamos el tipo de parámetros que retornará la función.

as

 -- Encapsulamos el conjunto de funciones dentro de un Begin y un end.

Begin

 -- Dentro de la sentencia o funcion podemos manejar variables

 --aunque puede no ser necesario para ser más eficiente la función.

 -- por cuestiones de ejemplo usamos la variable @resultado

 Declare @resultado money

 set @resultado  = @cantidad * 0.16

-- Cuando terminamos la función ponemos el Return

 Return (@resultado) -- Y la variable que devolverá la función @resultado.

end

 

Para llamar a la función la llamamos con un nombre de dos partes, con el esquema.funcion mas el parametro que requiere la funcion:

 

Select campo_producto, campo_unidadprecio, dbo.iva(campo_unidadprecio) as iva from tabla

 

 

Funciones con valores de tabla de varias instrucciones y Funciones con valores de tablas en línea

 

A groso modo y solo para simplificar, son un hibrido entre vista y procedimiento almacenado, ya que suelen ser consultas con una instrucción select, pero que pueden recibir parámetros, cosa que no puede hacer una vista y si un procedimiento desde la versión sql server 2008 en adelante. Un procedimiento almacenado es más poderoso, ya que puede encapsular insert, update, delete o un conjunto de instrucciones SQL… De todas formas si se puede… recomiendo que se trabajes con procedimientos almacenados  en lugar de con funciones, dentro de lo posible... ya que desde sql 2008 se puedes pasar variables tipo tabla (arrays) a procedimientos almacenados... (http://microsoftsqlsecret.fullblog.com.ar/stored-procedure-with-array-parameters-como-pasamos-variables-tipo-ta.html)

Funciones con valores de tabla de varias instrucciones:

--Creamos una función que se le ingrese por parámetro el país y devuelva los clientes de ese país:

Create function ListadoPais (@pais varchar(100))

returns @clientes table -- Decimos que retornamos como resultado una variable de tipo tabla y la declaramos

 (customerid varchar(5), companyname varchar(50), -- Se definen las columnas que se necesiten

 contactname varchar(100), country varhcar(100)

 )

 as

 -- Iniciamos la función. La variable tipo tabla @clientes es la que vamos a devolver como resultado de la función

 begin

 Insertamos a la variabla tipo tabla @clientes:

 Insert @clientes select customerid, companyname,

 contactname, country from customers where country = @pais -- variable @pais de entrada en la función

 Return

 end

 

 Para ver la función funcionando:

 Select * from dbo.ListadoPais('Argentina')

 

Funciones con valores de tablas en línea:

A diferencia de la anterior (funciones con valores de tabla), es una función con valores de tabla en línea.

Create funcion ListadoPais2 (@pais varchar(100))

returns table

as

return

(

select customerid, companyname,

 contactname, country from customers where country = @pais

)

 

 

Conceptos básicos de las funciones definidas por el usuario -> http://msdn.microsoft.com/es-es/library/ms191007.aspx

Descripción de funciones definidas por el usuario -> http://msdn.microsoft.com/es-es/library/ms190704.aspx

Tipos de funciones -> http://msdn.microsoft.com/es-es/library/ms177499.aspx


 

Apunte y recopilación por Norman M. Pardell

 

Puedes consultarme, si deseas cualquier aclaración, pregunta o sugerencia en: Contacto, contestaré tan pronto como me sea posible.

publicado por normanmpardell a las 05:26 · Sin comentarios  ·  Recomendar
Comentarios (0) ·  Enviar comentario
Esta entrada no admite comentarios.
img
.Sobre mí
FOTO

Norman M. Pardell

MCITP: Database Administrator & Database Developer, SQL Server 2008. MCC Award Certificate. Consultor Senior de bases de datos en Capgemini España, S.L. Asesoramiento en implementación, desarrollo y gestión de bases de datos en grandes compañías. Actualmente, asignado a proyecto en compañía líder en el sector energético global. Más de 10 años trabajando con SQL Server (y otros gestores de BBDD)

» Ver perfil

img
.Secciones
» Inicio
img
.Enlaces
» Microsoft MSDN Foros
» Windows Server 2012
img
.Más leídos
» Asignar la cantidad correcta de Memoria para SQL Server
» Base de Datos Sospechosa (Suspect)
» Como modificar la Intercalación (Collation) en SQL Server
» Como renombrar una instancia de SQL Server. sp_dropserver. sp_addserver
» Detectar bloqueos. SQL Server V.2005 y superiores
» Funciones SQL Server. Funciones escalares y funciones con valores de tabla.
» Integridad y corrupción en las bases de datos: DBCC CHECKDB
» Log de transacciones ( .ldf ). SQL Server.
» Migrando SQL Server 2005, 2008, 2008 R2 a SQL Server 2012
» Transacciones activas. SQL server 2008
img
.Nube de tags [?]
                                                           
img img
FULLServices Network | Crear blog | Privacidad