13
Funcions definides pel Funcions definides pel usuari (UDF) usuari (UDF) Departament: Informàtica Cicle: Desenvolupament d’Aplicacions Informàtiques Crèdit: C8, Àmbit de quarta generació Curs: Segon Per: Marc Giribet Arnó

Funcions Definides Pel Usuari (Udf)

Embed Size (px)

DESCRIPTION

Funcions definides pel usuari

Citation preview

Page 1: 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ó

Page 2: Funcions Definides Pel Usuari (Udf)

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.

Page 3: Funcions Definides Pel Usuari (Udf)

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

Page 4: Funcions Definides Pel Usuari (Udf)

Funcions EscalarsFuncions EscalarsEs creen amb la instrucció CREATE

FUNCTION.

CREATE FUNCTION nomFunció (paràmetres)RETURNS tipusDeDadesDeRetorn ASBEGINcosFuncióRETURN expresióEscalar END

Page 5: Funcions Definides Pel Usuari (Udf)

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

Page 6: Funcions Definides Pel Usuari (Udf)

Funcions EscalarsFuncions EscalarsCridem la funció:select *,dbo.ultimoDia(ord_date)as Ultimo_Dia_Mes from

sales

Resultat

Page 7: Funcions Definides Pel Usuari (Udf)

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.

Page 8: Funcions Definides Pel Usuari (Udf)

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

Page 9: Funcions Definides Pel Usuari (Udf)

Funcions TabularsFuncions TabularsUtilitzem la funció:SELECT * FROM dbo.empleados('Corto')

SELECT * FROM dbo.empleados('Largo')

Resultat:Long Name Shor Name

Page 10: Funcions Definides Pel Usuari (Udf)

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.

Page 11: Funcions Definides Pel Usuari (Udf)

EjempleCREATE FUNCTION fn_CustomerNamesInRegion

(@RegionParameter nvarchar(30) )

RETURNS table

AS

RETURN (

SELECT CustomerID, CompanyName

FROM Northwind.dbo.Customers

WHERE Region = @RegionParameter

)

Page 12: Funcions Definides Pel Usuari (Udf)

Utilitzem la funció:SELECT * FROM dbo.fn_CustomerNamesInRegion('WA')

Resultat:

Page 13: Funcions Definides Pel Usuari (Udf)

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ó