I Oracle er POWER() funktion returnerer sit første argument hævet til magten af sit andet argument.
Syntaks
Syntaksen ser sådan ud:
POWER(n2, n1) Hvert argument kan være enhver numerisk datatype eller enhver ikke-numerisk datatype, der implicit kan konverteres til en numerisk datatype.
Begge argumenter kan dog være et hvilket som helst tal, hvis n2 er negativ, derefter n1 skal være et heltal.
Eksempel
Her er et eksempel til demonstration:
SELECT POWER(8, 2)
FROM DUAL; Resultat:
POWER(8,2)
_____________
64 Og her bruger den en brøkdel i det andet argument:
SELECT POWER(8, 2.5)
FROM DUAL; Resultat:
POWER(8,2.5) __________________________________________ 181.01933598375616624661615669884135406
Det er dog kun muligt at bruge en brøkdel, når det første argument er positivt.
Negative værdier
Som nævnt, hvis det første argument er negativt, så skal det andet argument være et heltal:
SELECT POWER(-8, 2)
FROM DUAL; Resultat:
POWER(-8,2)
______________
64 Her er, hvad der sker, når det andet tal ikke er et heltal:
SELECT POWER(-8, 2.5)
FROM DUAL; Resultat:
Error starting at line : 1 in command - SELECT POWER(-8, 2.5) FROM DUAL Error report - ORA-01428: argument '-8' is out of range
Ikke-numeriske argumenter
Argumenterne kan være enhver numerisk datatype eller enhver ikke-numerisk datatype, der implicit kan konverteres til en numerisk datatype.
Her er et eksempel på, hvad der sker, når argumenterne ikke opfylder disse kriterier:
SELECT POWER('Gosh', 'Dang')
FROM DUAL; Resultat:
Error starting at line : 1 in command -
SELECT POWER('Gosh', 'Dang')
FROM DUAL
Error report -
ORA-01722: invalid number Nul-argumenter
POWER() returnerer null hvis et argument er null :
SET NULL 'null';
SELECT
POWER(null, 3),
POWER(8, null),
POWER(null, null)
FROM DUAL; Resultat:
POWER(NULL,3) POWER(8,NULL) POWER(NULL,NULL)
________________ ________________ ___________________
null null null
Som standard returnerer SQLcl og SQL*Plus et tomt mellemrum, når der opstår en null-værdi som et resultat af en SQL SELECT udmelding.
Du kan dog bruge SET NULL for at angive en anden streng, der skal returneres. Her specificerede jeg, at strengen null skal returneres.
Manglende argumenter
Kalder POWER() uden argumenter resulterer i en fejl:
SELECT POWER()
FROM DUAL; Resultat:
Error starting at line : 1 in command - SELECT POWER() FROM DUAL Error at Command Line : 1 Column : 8 Error report - SQL Error: ORA-00909: invalid number of arguments 00909. 00000 - "invalid number of arguments" *Cause: *Action:
Og det samme gælder, når man kalder det med for mange argumenter:
SELECT POWER(10, 2, 3)
FROM DUAL; Resultat:
Error starting at line : 1 in command - SELECT POWER(10, 2, 3) FROM DUAL Error at Command Line : 1 Column : 8 Error report - SQL Error: ORA-00909: invalid number of arguments 00909. 00000 - "invalid number of arguments" *Cause: *Action: