Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

Função POWER() no Oracle


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: