Criar um procedimento armazenado no Banco de Dados do Azure para PostgreSQL

Concluído

Criar um procedimento armazenado para uma tarefa específica tem muitas vantagens, incluindo estender a funcionalidade do banco de dados do Azure para PostgreSQL. Use um procedimento armazenado quando quiser:

  • Desenvolva e teste códigos complexos em um único local e, em seguida, chame-os quando necessário.
  • Execute código com eficiência. Os procedimentos armazenados que retornam o mesmo resultado são mais eficientes porque são pré-compilados e armazenados no servidor do Banco de Dados do Azure para PostgreSQL.
  • Facilite a leitura do seu código.
  • Inclua o tratamento de erros em uma transação.
  • Oculte a complexidade dos usuários.

Embora o Banco de Dados do Azure para PostgreSQL dê suporte para várias linguagens de programação, SQL é a linguagem nativa do PostgreSQL e funciona melhor com o otimizador.

Um procedimento armazenado é criado com as palavras-chave CREATE PROCEDURE. Como alternativa, use CREATE OR REPLACE PROCEDURE para criar um procedimento ou substituir um procedimento que tenha o mesmo nome.

Inclua um nome de esquema para criar o procedimento em um esquema específico. Caso contrário, ele será criado no esquema atual. O nome do procedimento precisa ser exclusivo dentro do esquema, incluindo os tipos de argumento de entrada. No entanto, você pode sobrecarregar nomes de procedimentos dando o mesmo nome a um procedimento ou função com tipos de argumento diferentes.

O usuário que cria o procedimento é o proprietário dele. Você também precisa especificar a linguagem de programação.

Os procedimentos usam os seguintes parâmetros:

  • name – opcionalmente, inclua o nome do esquema.
  • argmode – o modo do argumento. Pode ser IN, INOUT ou VARIADIC. O padrão é IN. OUT não é compatível; em vez disso, use INOUT. VARIADIC é um número indefinido de argumentos de entrada do mesmo tipo, que precisam ser os últimos argumentos de entrada.
  • argname – o nome do argumento.
  • argtype – o tipo de dados do argumento.
  • default_expr – uma expressão padrão (do mesmo tipo) a ser usada se o parâmetro não for especificado. Parâmetros de entrada seguindo um parâmetro com um valor padrão também precisam ter valores padrão.
  • lang_name – a linguagem de programação usada para escrever o procedimento. Pode ser SQL, C, interno ou o nome de uma linguagem de procedimento definida pelo usuário, por exemplo, PLPGSQL.

No exemplo a seguir, um procedimento armazenado chamado myprocedure é criado, que usa parâmetros de entrada a e b. IN é o padrão para os parâmetros, portanto, não precisamos identificá-los explicitamente como parâmetros de entrada. Quando o procedimento armazenado for chamado, os valores atribuídos a esses parâmetros serão inseridos na mytable.

CREATE PROCEDURE myprocedure (a integer, b integer)
    LANGUAGE SQL
    AS $$
        INSERT INTO mytable VALUES (a, b);
    $$;

O símbolo $$ é usado para iniciar e encerrar uma cadeia de caracteres. Você também pode usar aspas simples, mas isso pode causar problemas com outras linguagens de programação, portanto $$ é preferível.