Instru????o CREATE FUNCTION

A instru????o CREATE FUNCTION permite criar fun????es Java que podem ser utilizadas em express??es.

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 Tipos de dado.

Nota: 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 Derby 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'
Refer??ncias relacionadas
Instru????o CREATE INDEX
Instru????o CREATE PROCEDURE
Instru????o CREATE SCHEMA
Instru????o CREATE SYNONYM
Instru????o CREATE TABLE
Instru????o CREATE TRIGGER
Instru????o CREATE VIEW