Sintaxe
CREATE FUNCTION nome-da-função ( [ parâmetro-da-função
[, parâmetro-da-função] ] * ) RETURNS tipo-de-dado [ elemento-da-função ] *
nome-da-função
[ nome-do-esquema. ] IdentificadorSQL92
Se o nome-do-esquema não for fornecido, o esquema corrente se tornará o
esquema padrão.
Se for especificado um nome de procedimento qualificado, o nome do esquema não
poderá começar por SYS.
parâmetro-da-função
[ nome_do_parâmetro ] tipo-de-dado
O nome_do_parâmetro deve ser único na função.
A sintaxe do tipo-de-dado está descrita em
.
Os tipos-de-dado longos, como LONG VARCHAR, LONG VARCHAR FOR BIT DATA,
CLOB e BLOB, não são permitidos como parâmetros da instrução CREATE FUNCTION.
elemento-da-função
{
| LANGUAGE { JAVA }
| EXTERNAL NAME cadeia-de-caracteres
| PARAMETER STYLE JAVA
| { NO SQL | CONTAINS SQL | READS SQL DATA }
| { RETURNS NULL ON NULL INPUT | CALLED ON NULL INPUT }
}
LANGUAGE
JAVA- o gerenciador de banco de dados chama a função como um método
estático público de uma classe Java.
EXTERNAL NAME cadeia-de-caracteres
A cadeia-de-caracteres descreve o método Java a ser chamado quando
a função for executada, e possui a seguinte forma:
nome-da-classe.nome-do-método
O EXTERNAL NAME (nome externo) não pode conter espaços indevidos.
PARAMETER STYLE
JAVA - A função utiliza uma convenção de passagem de parâmetros em
conformidade com a linguagem Java e com a especificação de rotinas SQL.
Os parâmetros INOUT e OUT são passados como matrizes de uma única entrada para
facilitar o retorno de valores.
Os conjuntos de resultados são retornados através de parâmetros adicionais
para um método Java do tipo java.sql.ResultSet[] passados como matrizes
de uma única entrada.
O
não suporta tipos de coluna longos (por exemplo, LONG VARCHAR, BLOB, etc.).
Ocasiona erro tentar utilizar um destes tipos de coluna longos.
NO SQL, CONTAINS SQL, READS SQL DATA
Indica se a função emite instruções SQL e, se o fizer, de que tipo.
- CONTAINS SQL
- Indica que podem ser executadas pela função instruções SQL que não lêem
nem modificam dados SQL. As instruções não suportadas por qualquer função
retornam um erro diferente.
- NO SQL
- Indica que a função não pode executar nenhuma instrução SQL.
- READS SQL DATA
- Indica que podem ser incluídas na função instruções SQL que não modificam
dados SQL.
As instruções não suportadas por qualquer função retornam um erro diferente.
Este é o valor padrão.
RETURNS NULL ON NULL INPUT ou CALLED ON NULL INPUT
Especifica se a função será chamada quando algum de seus argumentos de
entrada for nulo.
- RETURNS NULL ON NULL INPUT
- Especifica que a função não será chamada quando o valor de algum de seus
argumentos de entrada for nulo. O resultado será o valor nulo.
- CALLED ON NULL INPUT
- Especifica que a função será chamada quando o valor de algum de seus
argumentos de entrada for nulo.
Esta especificação significa que a função deve ser codificada para testar
nulos nos valores dos argumentos.
A função poderá retornar um valor nulo, ou não nulo.
Esta é a definição padrão.
Os elementos da função podem estar em qualquer ordem, mas cada tipo de
elemento só pode aparecer uma vez.
A definição da função deve conter estes elementos:
- LANGUAGE
- PARAMETER STYLE
- EXTERNAL NAME
Exemplo
CREATE FUNCTION rad_graus(radianos DOUBLE) RETURNS DOUBLE
PARAMETER STYLE JAVA NO SQL LANGUAGE JAVA
EXTERNAL NAME 'java.lang.Math.toDegrees'