Instru????o CREATE PROCEDURE

A instru????o CREATE PROCEDURE permite criar procedimentos armazenados em Java, que podem ser chamados utilizando a instru????o CALL PROCEDURE.

Sintaxe

CREATE PROCEDURE nome-do-procedimento ( [ par??metro-do-procedimento
   [, par??metro-do-procedimento] ] * )
[ elemento-do-procedimento ] *

nome-do-procedimento

[ nome-do-esquema. ] IdentificadorSQL92

Se o nome-do-esquema n??o for fornecido, o esquema corrente ser?? 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-do-procedimento

[ { IN | OUT | INOUT } ] [ nome-do-par??metro ] tipo-de-dado

O valor padr??o para o par??metro ?? IN. O nome-do-par??metro deve ser ??nico no procedimento.

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 podem ser usados como par??metros nas instru????es CREATE PROCEDURE.

elemento-do-procedimento

 {
| [ DYNAMIC ] RESULT SETS INTEGER
| LANGUAGE { JAVA }
| EXTERNAL NAME cadeia-de-caracteres
| PARAMETER STYLE JAVA
| { NO SQL | MODIFIES SQL DATA | CONTAINS SQL | READS SQL DATA }
 }

DYNAMIC RESULT SETS integer

Indica o limite superior estimado de conjuntos de resultados retornados pelo procedimento. O padr??o ?? sem (zero) conjuntos de resultados din??micos.

LANGUAGE

JAVA - o gerenciador de banco de dados chama o procedimento 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 o procedimento for executado, e possui a seguinte forma:
nome_da_classe.nome_do_m??todo
O nome externo n??o pode conter espa??os.

PARAMETER STYLE

JAVA - O procedimento 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 [] que s??o 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, MODIFIES SQL DATA

Indica se o procedimento armazenado emite instru????es SQL e, se o fizer, de que tipo.

CONTAINS SQL
Indica que podem ser executadas pelo procedimento armazenado instru????es SQL que n??o l??em nem modificam dados SQL. As instru????es n??o suportadas por qualquer procedimento armazenado retornam um erro diferente. O valor padr??o ?? MODIFIES SQL DATA.
NO SQL
Indica que o procedimento armazenado n??o pode executar nenhuma instru????o SQL.
READS SQL DATA
Indica que podem ser inclu??das no procedimento armazenado algumas instru????es SQL que n??o modificam dados SQL. As instru????es n??o suportadas por qualquer procedimento armazenado retornam um erro diferente.
MODIFIES SQL DATA
Indica que o procedimento armazenado pode executar qualquer instru????o SQL, exceto as instru????es n??o suportadas por procedimentos armazenados.
Os elementos do procedimento podem estar em qualquer ordem, mas cada tipo de elemento pode aparecer somente uma ??nica vez. A defini????o do procedimento deve conter os seguintes elementos:
  • LANGUAGE
  • PARAMETER STYLE
  • EXTERNAL NAME

Exemplo

CREATE PROCEDURE VENDAS.RENDIMENTO_TOTAL(IN V_M??S INTEGER,
IN V_ANO INTEGER, OUT TOTAL DECIMAL(10,2))
PARAMETER STYLE JAVA READS SQL DATA LANGUAGE JAVA EXTERNAL NAME
'com.acme.vendas.calculaRendimentoPorMes'
Refer??ncias relacionadas
Instru????o CREATE FUNCTION
Instru????o CREATE INDEX
Instru????o CREATE SCHEMA
Instru????o CREATE SYNONYM
Instru????o CREATE TABLE
Instru????o CREATE TRIGGER
Instru????o CREATE VIEW