name
the name (opcionalmente schema-qualified) of the procedure to create.
argmode
O modo de um argumento: IN
INOUT
, ou VARIADIC
. Se omitido, o padrão é IN
. (OUT
argumentos não são atualmente suportados para procedimentos. Use INOUT
instead.)
argname
o nome de um argumento.,
argtype
o(S) Tipo (s) de dados dos argumentos do procedimento (eventualmente qualificados em esquemas). Os tipos de argumento podem ser tipos de base, compósito ou domínio, ou podem referenciar o tipo de uma coluna de tabela.
dependendo da linguagem de implementação também pode ser permitido especificar “pseudo-tipos” tais como cstring
. Pseudo-tipos indicam que o tipo de argumento real é ou incompletamente especificado, ou fora do conjunto de tipos de dados SQL ordinários.
o tipo de coluna é referenciado escrevendo
. A utilização deste recurso pode, por vezes, ajudar a tornar um procedimento independente das alterações à definição de uma tabela.table_name
.,column_name
%TYPE
default_expr
uma expressão a ser usada como valor padrão se o parâmetro não for especificado. A expressão tem que ser coerciva ao tipo de argumento do parâmetro. Todos os parâmetros de entrada seguindo um parâmetro com um valor padrão também devem ter valores padrão.
lang_name
o nome da língua em que o procedimento é implementado., Ele pode ser sql
c
internal
, ou o nome de um utilizador definido linguagem processual, por exemplo, plpgsql
. O fecho do nome em aspas simples é desactualizado e requer um caso correspondente.
TRANSFORM { FOR TYPE
type_name
}} código>
devem aplicar-se as listas que transformam uma chamada para o procedimento. Transforma o convert entre tipos SQL e tipos de dados específicos da linguagem; veja criar transformação. Implementações de linguagem processual geralmente têm conhecimento hardcoded dos tipos embutidos, de modo que aqueles não precisam ser listados aqui., Se uma implementação de linguagem processual não sabe como lidar com um tipo e nenhuma transformada é fornecida, ela vai voltar para um comportamento padrão para converter tipos de dados, mas isso depende da implementação.
SECURITY INVOKER
SECURITY DEFINER
SECURITY INVOKER
indica que o procedimento é executado com os privilégios do usuário que o chama. Esse é o padrão. SECURITY DEFINER
especifica que o procedimento deve ser executado com os privilégios do usuário que o possui.,
A Palavra-chave EXTERNAL
é permitida para a conformidade SQL, mas é opcional uma vez que, ao contrário de SQL, Esta característica se aplica a todos os procedimentos não apenas externos.
A SECURITY DEFINER
procedure cannot execute transaction control statements (for example, COMMIT
and ROLLBACK
, depending on the language).,
configuration_parameter
value
SET
cláusula faz com que a configuração especificada parâmetro a ser definido para o valor especificado quando o procedimento é inserido e, em seguida, restaurado ao seu valor anterior, quando o procedimento termina. SET FROM CURRENT
guarda o valor do parâmetro actual quando CREATE PROCEDURE
é executado como o valor a aplicar quando o procedimento é introduzido.,
Se SET
cláusula é anexado a um procedimento, em seguida, os efeitos de uma SET LOCAL
comando executado dentro do procedimento para a mesma variável são restritos para o procedimento: o parâmetro de configuração prévia de um valor ainda é restaurado no procedimento de saída., No entanto, uma ordinária SET
comando (sem LOCAL
) substitui o SET
cláusula, assim como faria para um anterior SET LOCAL
comando: os efeitos de um comando irá persistir após o procedimento de saída, a menos que a transação é revertida.
Se SET
cláusula é anexado a um procedimento, em seguida, que o procedimento não é possível executar controle de transação declarações (por exemplo, COMMIT
e ROLLBACK
, dependendo do idioma).,
ver SET e Capítulo 19 para mais informações sobre os nomes e valores dos parâmetros permitidos.
definition
a string constant defining the procedure; the meaning depends on the language. Pode ser um nome de procedimento interno, o caminho para um arquivo objeto, um comando SQL, ou texto em uma linguagem processual.
é muitas vezes útil usar a citação em Dólares (ver secção 4.1.2.4) para escrever a definição de procedimento, em vez da sintaxe normal de simples citação. Sem citar o dólar, qualquer aspas ou retrocessos na definição do procedimento deve ser escapada dobrando-os.,
obj_file
link_symbol
Esta forma de AS
cláusula é usada para carregável dinamicamente linguagem C procedimentos quando o nome do procedimento em linguagem C do código fonte não é o mesmo como o nome do procedimento SQL. A string obj_file
é o nome do arquivo de biblioteca compartilhada contendo o procedimento C compilado, e é interpretado como para o comando LOAD. The string link_symbol
is the procedure's link symbol, that is, the name of the procedure in the C language source code., Se o símbolo da ligação for omitido, assume-se que é o mesmo que o nome do procedimento SQL a ser definido.
Quando repetido CREATE PROCEDURE
chamadas referem-se ao mesmo arquivo objeto, o arquivo é carregado apenas uma vez por sessão. Para descarregar e recarregar o arquivo (talvez durante o desenvolvimento), Inicie uma nova sessão.