trešdiena, 2011. gada 5. oktobris

Iekļautās (inline) lietotāja definētās funkcijas

Iekļautās lietotāja definētās funkcijas kā likums atgriež tabulu. Un kā likums- sastāv tikai no viena (varbūt pat ļoti sarežģīta) vaicājuma.

Parasti lietotāja definētās funkcijas (UDF = User Defined Function), kas atgriež datus tabulas veidā ir samērā sarežģīti izmantot, jo ir jādefinē, kāda izskatīsies tabula, ko funkcija atgriezīs. Iekļautās UDF ir daudz vienkāršāk realizēt un tās ir ērti izmantot lai veidotu kaut ko līdzīgu "dinamiski parametrizējamiem skatiem" (reāli tādi skati vismaz pagaidām nav. vairāk par skatiem- Skati SQL Server).

Iekļautās UDF piemērs (pilns skripts ar piemēra tabulas izveidi, datiem un satīrīšanas skriptu, raksta beigās):
Create Function fn_getDataFromTemp
(
    @Nodala int
)
Returns Table
As
    Return
        Select TempID, Nodala, Vards, Uzvards
        From dbo.Temp
        Where Nodala = @Nodala;
Atšķirībā no "parastas" UDF, kas atgriež tabulu, šī izskatās daudz vienkāršāka. Par iekļautām funkcijām vairāk var lasīt msdn. Lai gan patiesībā neko daudz vairāk tur izlasīt nevarēs.

Pilns skripts:
Create Table dbo.Temp
(
    TempID int primary key identity,
    Nodala int,
    Vards nvarchar(50),
    Uzvards nvarchar(50)
)
Go
Insert Into dbo.Temp(Nodala, Vards, Uzvards) Values (1, 'Janis', 'Kocins');
Insert Into dbo.Temp(Nodala, Vards, Uzvards) Values (2, 'Ilze', 'Liepiņa');
Insert Into dbo.Temp(Nodala, Vards, Uzvards) Values (2, 'Vija', 'Rītiņa');
Go
Create Function fn_getDataFromTemp
(
    @Nodala int
)
Returns Table
As
    Return
        Select TempID, Nodala, Vards, Uzvards
        From dbo.Temp
        Where Nodala = @Nodala;
Go
Select * From dbo.fn_getDataFromTemp(1)
Select * From dbo.fn_getDataFromTemp(2)
Go
Drop Table dbo.Temp
Drop Function dbo.fn_getDataFromTemp

Nav komentāru:

Ierakstīt komentāru