Funcions Definides Pel Usuari (Udf)
-
Upload
marc-giribet -
Category
Documents
-
view
713 -
download
1
description
Transcript of Funcions Definides Pel Usuari (Udf)
Funcions definides pel Funcions definides pel usuari (UDF)usuari (UDF)
Departament: InformàticaCicle: Desenvolupament d’Aplicacions InformàtiquesCrèdit: C8, Àmbit de quarta generacióCurs: SegonPer: Marc Giribet Arnó
Que son les funcions?Que son les funcions?
Una funció definida pel usuari pren cero o més paràmetres de entrada i retorna un valor escalar o una taula.
Els paràmetres d’entrada poder ser qualsevol tipus de dades, tret de timestamp, cursors o taules.
Les funcions definides pel usuari no admeten paràmetres de sortida.
Tipus de funcionsTipus de funcionsFuncions escalars
◦Retornen un únic valor escalarFuncions tabulars
◦Retornen un conjunt de resultats complet
◦Similar a una taulaFuncions en línea
◦Son un cas especial de les Tabulars◦Consten de una única instrucció
SELECT
Funcions EscalarsFuncions EscalarsEs creen amb la instrucció CREATE
FUNCTION.
CREATE FUNCTION nomFunció (paràmetres)RETURNS tipusDeDadesDeRetorn ASBEGINcosFuncióRETURN expresióEscalar END
Funcions EscalarsFuncions EscalarsExemple: CREATE FUNCTION ultimoDia ( @Date varchar(20) ) RETURNS datetime AS BEGIN --Comprobació si es una data IF ISDATE(@Date) = 1 BEGIN --es determina el primer dia del mes SET @Date = DATEADD(day,-DAY(@Date)+1,@Date) --es determina l'ultim dia del mes SET @Date = DATEADD(day,-1,DATEADD(month,1,@Date)) END ELSE SET @Date = '1/1/1980' RETURN @Date END
Funcions EscalarsFuncions EscalarsCridem la funció:select *,dbo.ultimoDia(ord_date)as Ultimo_Dia_Mes from
sales
Resultat
Funcions TabularsFuncions TabularsBEGIN y END delimiten el cos de
la funció.La clàusula RETURNS especifica
table como el tipus de dades retornat.
La clàusula RETURNS defineix un nom per a la taula i el seu format.
Funcions TabularsFuncions TabularsExemple:CREATE FUNCTION empleados(@tipo nvarchar(9))RETURNS @empleados TABLE(ID_Empleado varchar(10) PRIMARY KEY NOT NULL,[Nombre_Empleado] Nvarchar(61) NOT NULL)ASBEGINIF @tipo = 'Corto'INSERT @empleados SELECT emp_id, fnameFROM EmployeeELSE IF @tipo = 'Largo'INSERT @empleados SELECT emp_id,(fname + ' ' + lname) FROM EmployeeELSE INSERT @empleados SELECT 'ERROR','ERROR'RETURNEND
Funcions TabularsFuncions TabularsUtilitzem la funció:SELECT * FROM dbo.empleados('Corto')
SELECT * FROM dbo.empleados('Largo')
Resultat:Long Name Shor Name
Funcions en líneaFuncions en líneaEl contingut de la funció es una
instrucció SELECT.No s’utilitza BEGUIN ni ENDLa clàusula RETURNS especifica
table como el tipus de dades retornat.
El format es defineix pel conjunt de resultats.
EjempleCREATE FUNCTION fn_CustomerNamesInRegion
(@RegionParameter nvarchar(30) )
RETURNS table
AS
RETURN (
SELECT CustomerID, CompanyName
FROM Northwind.dbo.Customers
WHERE Region = @RegionParameter
)
Utilitzem la funció:SELECT * FROM dbo.fn_CustomerNamesInRegion('WA')
Resultat:
Modificació i eliminació de Modificació i eliminació de les funcions definides pel les funcions definides pel usuariusuari
Modificació de les funcions:◦ ALTER FUNCTION Nom funció <Nou contingut de la funció>
Eliminació de les funcions:◦ DROP FUNCTION nomFunció