Redigerer
Brukerdefinert funksjon
(avsnitt)
Hopp til navigering
Hopp til søk
Advarsel:
Du er ikke innlogget. IP-adressen din vil bli vist offentlig om du redigerer. Hvis du
logger inn
eller
oppretter en konto
vil redigeringene dine tilskrives brukernavnet ditt, og du vil få flere andre fordeler.
Antispamsjekk.
Ikke
fyll inn dette feltet!
=== Andre språk === Noen databasestyringssystemer tillater at det opprettes brukerdefinerte funksjoner på andre språk enn SQL. For eksempel lar [[Microsoft SQL Server]] brukeren bruke [[.NET|.NET-språk]] inkludert [[C Sharp|C#]] for dette formålet. DB2 og Oracle støtter brukerdefinerte funksjoner skrevet i [[C (programmeringsspråk)|C]] eller [[Java (programmeringsspråk)|Java]]. ==== SQL Server 2000 ==== I [[Microsoft SQL Server]] 2000 er det 3 typer brukerdefinerte funksjoner: [[Skalarfelt|Skalarfunksjoner]], innebygde tabellfunksjoner og fleruttrykks tabellfunksjoner. * Skalarfunksjoner returnerer en enkelt dataverdi (ikke en tabell) med RETURNS-klausulen. De kan bruke alle skalare datatyper, med unntak av [[tidsstempel]] og brukerdefinerte datatyper. * Innebygde tabellfunksjoner returnerer [[resultatmengde]]n av en enkelt SELECT-uttrykk/setning{{Klargjør}} * Fleruttrykks tabellfunksjoner returnerer en tabell som har blitt bygget med mange TRANSACT-SQL-uttrykk/setninger{{Klargjør}} Brukerdefinerte funksjoner kan kalles fra en spørring lik som for innebygde funksjoner som OBJECT_ID(), LEN() og DATEDIFF(), eller kan kjøres via en EXECUTE-setning som lagrede prosedyrer. På Microsoft SQL Server 2000 kan ytelsen til tabellfunksjoner som "pakker" en visning være mye raskere enn selve visningen. Deb følgende funksjonen MyFunction er et eksempel på en funksjonsinnpakning som går raskere enn den underliggende visningen MyView:<syntaxhighlight lang="tsql"> CREATE FUNCTION MyFunction() RETURNS @Tbl TABLE ( StudentID VARCHAR(255), SAS_StudentInstancesID INT, Label VARCHAR(255), Value MONEY, CMN_PersonsID INT ) AS BEGIN INSERT @Tbl ( StudentID, SAS_StudentInstancesID, Label, Value, CMN_PersonsID ) SELECT StudentID, SAS_StudentInstancesID, Label, Value, CMN_PersonsID FROM MyView -- where MyView selects (with joins) the same columns from large table(s) RETURN END </syntaxhighlight>På Microsoft SQL Server 2005 er derimot resultatet av den samme kodeutførelsen motsatte: Visningen utføres raskere enn funksjonsinnpakningen. Brukerdefinerte funksjoner i Microsoft SQL er [[Underrutine|underrutiner]] laget av en eller flere Transact-SQL-setninger som kan brukes til å innkapsle kode for gjenbruk. * Den tar ingen eller flere argumenter og evaluerer en returverdi * Inneholder både [[kontrollflyt]]- og [[Data manipulation language|DML]]-uttrykk som ligner på lagrede prosedyrer * Tillater ikke endringer i globale øktstatuser, eksempelvis endringer i databaseressurser eller eksterne ressurser som en fil eller et nettverk * Støtter ikke utputtparametre * DEFAULT-nøkkelordet må spesifiseres for å overføre standardverdiern til parameteren * Feil i brukerdefinerte funksjoner får brukerdefinerte funksjoner til å avbrytes, som igjen avbryter uttrykket som kalte den brukerdefinerte funksjonen <syntaxhighlight lang="tsql"> CREATE FUNCTION CubicVolume -- Input dimensions in centimeters ( @CubeLength decimal(4,1), @CubeWidth decimal(4,1), @CubeHeight decimal(4,1) ) RETURNS decimal(12,3) AS BEGIN RETURN(@CubeLength * @CubeWidth * @CubeHeight) END </syntaxhighlight>Datatyper som støttes i Microsoft SQL Server 2000: * Som en midlertidig tabell som brukes til å lagre resultater * Mest brukt til å definere midlertidige variabler av type (tabell) og returverdien til en brukerdefinerte funksjon. * Omfanget er begrenset til funksjon, lagret prosedyre eller satsen der den er definert * Tildelingsoperasjon er ikke tillatt mellom (tabell)variabler * Kan brukes i SELECT, INSERT, UPDATE og DELETE * CREATE FUNCTION brukes for å opprette en brukerdefinert funksjon * ALTER FUNCTION brukes for å endre egenskapene til en brukerdefinert funksjon * DROP FUNCTION brukes for å fjerne en brukerdefinert funksjon ==== Apache Hive ==== [[Apache Hive]] definerer, i tillegg til de vanlige brukerdefinerte funksjoner, også brukerdefinerte ''aggregerte'' funksjoner (UDAF) og ''tabellgenererende'' funksjoner (UDTF).<ref> {{Kilde www|url=https://cwiki.apache.org/confluence/display/Hive/LanguageManual+UDF|tittel=LanguageManual UDF - Apache Hive - Apache Software Foundation|fornavn=|etternavn=|forlag=}} </ref> Hive gjør det mulig for utviklere å lage sine egne tilpassede funksjoner med Java.<ref> {{Kilde www|url=https://cwiki.apache.org/confluence/display/Hive/HivePlugins|tittel=HivePlugins - Apache Hive - Apache Software Foundation|fornavn=|etternavn=|forlag=}} </ref> ==== Apache Doris ==== Apache Doris, en [[Åpen kildekode|åpent kildekodet]] [[Online analytisk prosessering|sanntidsanalytisk database]], lar eksterne brukere bidra med sine egne brukerdefinerte funksjoner til databasen.<ref>{{Kilde www|url=https://doris.apache.org/docs/dev/ecosystem/udf/contribute-udf?_highlight=udf|tittel=Apache Doris UDF|besøksdato=8. april 2023|arkiv-dato=2023-04-10|arkiv-url=https://web.archive.org/web/20230410141729/https://doris.apache.org/docs/dev/ecosystem/udf/contribute-udf/?_highlight=udf|url-status=yes}}</ref>
Redigeringsforklaring:
Merk at alle bidrag til Wikisida.no anses som frigitt under Creative Commons Navngivelse-DelPåSammeVilkår (se
Wikisida.no:Opphavsrett
for detaljer). Om du ikke vil at ditt materiale skal kunne redigeres og distribueres fritt må du ikke lagre det her.
Du lover oss også at du har skrevet teksten selv, eller kopiert den fra en kilde i offentlig eie eller en annen fri ressurs.
Ikke lagre opphavsrettsbeskyttet materiale uten tillatelse!
Avbryt
Redigeringshjelp
(åpnes i et nytt vindu)
Navigasjonsmeny
Personlige verktøy
Ikke logget inn
Brukerdiskusjon
Bidrag
Opprett konto
Logg inn
Navnerom
Side
Diskusjon
norsk bokmål
Visninger
Les
Rediger
Rediger kilde
Vis historikk
Mer
Navigasjon
Forside
Siste endringer
Tilfeldig side
Hjelp til MediaWiki
Verktøy
Lenker hit
Relaterte endringer
Spesialsider
Sideinformasjon