funcions definides pel usuari (udf)

Post on 20-Nov-2014

710 Views

Category:

Documents

1 Downloads

Preview:

Click to see full reader

DESCRIPTION

Funcions definides pel usuari

TRANSCRIPT

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ó

top related