No Oracle, o
POWER()
A função retorna seu primeiro argumento elevado à potência de seu segundo argumento. Sintaxe
A sintaxe fica assim:
POWER(n2, n1)
Cada argumento pode ser qualquer tipo de dados numérico ou qualquer tipo de dados não numérico que possa ser convertido implicitamente em um tipo de dados numérico.
Ambos os argumentos podem ser qualquer número, entretanto, se
n2
for negativo, então n1
deve ser um número inteiro. Exemplo
Segue um exemplo para demonstrar:
SELECT POWER(8, 2)
FROM DUAL;
Resultado:
POWER(8,2) _____________ 64
E aqui está usando uma parte fracionária no segundo argumento:
SELECT POWER(8, 2.5)
FROM DUAL;
Resultado:
POWER(8,2.5) __________________________________________ 181.01933598375616624661615669884135406
No entanto, usar uma parte fracionária só é possível quando o primeiro argumento é positivo.
Valores negativos
Como mencionado, se o primeiro argumento for negativo, o segundo argumento deve ser um inteiro:
SELECT POWER(-8, 2)
FROM DUAL;
Resultado:
POWER(-8,2) ______________ 64
Aqui está o que acontece quando o segundo número não é um número inteiro:
SELECT POWER(-8, 2.5)
FROM DUAL;
Resultado:
Error starting at line : 1 in command - SELECT POWER(-8, 2.5) FROM DUAL Error report - ORA-01428: argument '-8' is out of range
Argumentos não numéricos
Os argumentos podem ser qualquer tipo de dados numérico ou qualquer tipo de dados não numérico que possa ser convertido implicitamente em um tipo de dados numérico.
Aqui está um exemplo do que acontece quando os argumentos não satisfazem esse critério:
SELECT POWER('Gosh', 'Dang')
FROM DUAL;
Resultado:
Error starting at line : 1 in command - SELECT POWER('Gosh', 'Dang') FROM DUAL Error report - ORA-01722: invalid number
Argumentos nulos
POWER()
retorna null
se algum argumento for null
:SET NULL 'null';
SELECT
POWER(null, 3),
POWER(8, null),
POWER(null, null)
FROM DUAL;
Resultado:
POWER(NULL,3) POWER(8,NULL) POWER(NULL,NULL) ________________ ________________ ___________________ null null null
Por padrão, SQLcl e SQL*Plus retornam um espaço em branco sempre que um valor nulo ocorre como resultado de um SQL
SELECT
demonstração. No entanto, você pode usar
SET NULL
para especificar uma string diferente a ser retornada. Aqui eu especifiquei que a string null
deve ser devolvido. Argumentos ausentes
Chamando
POWER()
sem nenhum argumento resulta em um erro:SELECT POWER()
FROM DUAL;
Resultado:
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:
E a mesma coisa se aplica ao chamá-lo com muitos argumentos:
SELECT POWER(10, 2, 3)
FROM DUAL;
Resultado:
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: