CREACION DE FUNCIONES EN SQL SERVER

PROGRAMACIÓN CON TRANSACT: Creación de Funciones
Existen tres tipos de funciones en SQL Server una parece ser como el tipo de funciones de los leguajes de programación donde se le envía un valor y retorna un resulta a esta se les llama funciones escalares, los otros dos tipos de funciones  resultan un hibrido entre vista y procedimiento almacenado, permitiendo enviar parámetros a una consulta, en este video se revisa su funcionamiento.
Use northwind
go
–1.Creacion de Funciones Escalares
CREATE FUNCTION Iva  (@DATE money)
RETURNS money
AS
BEGIN
Declare @iva money
Set  @Iva=@date*.12
Return(@iva)
END
–3.Revisar la funcion debe de escribirse el nombre con dos partes
Select unitprice, dbo.iva(unitprice) as iva from [order details]
–4.borrar la funcion
drop function iva
–5.Otro ejemplo de funcion
CREATE Function Comision(@valor money)
ReturnS money
as
Begin
Declare @Resultado money
if @valor>=15
    BEGIN
         SET @RESULTADO= @VALOR * 1.10
    END
ELSE
    BEGIN
         SET @RESULTADO=@VALOR
    END
RETURN @RESULTADO
END
–ejecutar la funcion
SELECT UNITPRICE, DBO.Comision(UNITPRICE) FROM [ORDER DETAILS]
/* en una funcion no se pueden usar estas funciones no determiniestas
@@ERROR FORMATMESSAGE    IDENTITY     USER_NAME
@@IDENTITY   GETANSINULL NEWID    @@ERROR
@@ROWCOUNT   GETDATE PERMISSIONS @@IDENTITY
@@TRANCOUNT GetUTCDate   SESSION_USER     @@ROWCOUNT
APP_NAME     HOST_ID STATS_DATE   @@TRANCOUNT
CURRENT_TIMESTAMP         HOST_NAME     SYSTEM_USER
CURRENT_USER     IDENT_INCR   TEXTPTR
DATENAME     IDENT_SEED   TEXTVALID
*/
–6.Una función con valores de tabla de varias instrucciones es una combinación de una vista y un procedimiento almacenado.
CREATE FUNCTION LISTAPORPAIS(@PAIS  VARCHAR(50))
RETURNS @CLIENTES TABLE
(
CUSTOMERID VARCHAR(10), COMPANYNAME VARCHAR(50),CONTACTNAME VARCHAR(50) ,COUNTRY VARCHAR(50)
)
AS
BEGIN
INSERT @CLIENTES SELECT CUSTOMERID,COMPANYNAME,CONTACTNAME,COUNTRY FROM CUSTOMERS
WHERE COUNTRY=@PAIS
RETURN
END
–7.EJECUCION DE FUNCION
SELECT * FROM LISTAPORPAIS(‘GERMANY’)
–8.Ejemplo de una función con valores de tabla en línea
CREATE FUNCTION DETALLEPEDIDO_FECHA(@INICIO DATETIME, @FIN DATETIME)
RETURNS TABLE
AS
RETURN
(
SELECT O.ORDERID,O.ORDERDATE,P.PRODUCTID, P.PRODUCTNAME,(OD.UNITPRICE * OD.QUANTITY) AS TOTAL
FROM ORDERS AS O INNER JOIN [ORDER DETAILS] AS OD
ON O.ORDERID=OD.ORDERID INNER JOIN PRODUCTS AS P
ON OD.PRODUCTID=P.PRODUCTID
WHERE O.ORDERDATE BETWEEN @INICIO AND @FIN
)
–Ejecutar la funcion
SELECT * FROM DBO.DETALLEPEDIDO_FECHA(‘1998-01-01’,‘1998-31-12’)

One thought on “CREACION DE FUNCIONES EN SQL SERVER

  • 19 December, 2012 at 3:02 pm
    Permalink

    muchas gracias me sirvio de muchio tu primera funcion escalar ojala hicieras mas de estas ami parecer son la mas dificiles!!

    Reply

Leave a Reply

Your email address will not be published. Required fields are marked *