DEV Community

JOAO GABRIEL SANTOS NEVES
JOAO GABRIEL SANTOS NEVES

Posted on

[PT-BR] SQL Server Procedures

Pré-requisitos

Antes de mergulhar neste artigo, é necessário conhecer os seguintes conceitos:

  1. Você precisa saber o que é um sistema de banco de dados.
  2. Você precisa saber o que é uma procedure de banco de dados.
  3. Você precisa estar ciente de que as procedures armazenadas podem variar entre os sistemas de banco de dados que você escolher.

O que é um sistema de banco de dados?

Um sistema de banco de dados é uma solução de software que gerencia, organiza e fornece acesso a dados. Ele é projetado para armazenar, recuperar e manipular eficientemente grandes volumes de dados, garantindo integridade, segurança e controle de concorrência dos dados. Um sistema de banco de dados normalmente inclui um sistema de gerenciamento de banco de dados (SGBD) e os próprios dados.

O que é uma procedure?

Procedures (às vezes chamados de Procedimentos Armazenados ou Procs) são sub-rotinas que podem conter uma ou mais instruções SQL que realizam uma tarefa específica. Elas podem ser usadas para validação de dados, controle de acesso ou para reduzir o tráfego de rede entre clientes e servidores de SGBD. Lógica de negócios extensa e complexa pode ser incorporada na sub-rotina, oferecendo assim melhor desempenho.

Diferenças entre stored procedures no MySQL, PostgreSQL e SQL Server

Embora todos eles suportem procedimentos armazenados como uma maneira de encapsular e executar uma série de instruções SQL, há variações na sintaxe, recursos e funcionalidades. Aqui estão alguns pontos-chave de diferença:

  1. Diferenças de Sintaxe:

    1.1 SQL Server usa Transact-SQL (T-SQL) para stored procedures.
    1.2 O MySQL usa sua própria linguagem procedural conhecida como MySQL Stored Procedure Language.
    1.3 O PostgreSQL usa PL/pgSQL como sua linguagem procedural.

  2. Recursos de Linguagem Procedural:

    2.1 O T-SQL do SQL Server oferece um conjunto rico de recursos de programação procedural, incluindo construções de controle de fluxo, tratamento de erros e gerenciamento de transações.
    2.2 A linguagem de procedimento armazenado do MySQL é semelhante ao T-SQL, mas pode ter algumas diferenças sintáticas e um conjunto ligeiramente diferente de recursos.
    2.3 O PL/pgSQL do PostgreSQL é uma linguagem versátil e poderosa, semelhante ao PL/SQL no Oracle, e fornece recursos como loops, declarações condicionais e tratamento de exceções.

  3. Transaction Management:

3.1 O tratamento de transações pode ter diferenças sutis. Por exemplo, a maneira como as transações são iniciadas, confirmadas ou revertidas pode variar.
3.2 O SQL Server frequentemente usa instruções BEGIN TRANSACTION, COMMIT e ROLLBACK.
3.3 MySQL e PostgreSQL têm seus equivalentes, mas a sintaxe e o comportamento podem diferir.

  1. Error Handling:

4.1 O SQL Server fornece blocos TRY...CATCH para tratamento estruturado de erros.
4.2 O MySQL usa DECLARE ... HANDLER para manipulação de exceções.
4.3 O PostgreSQL possui blocos EXCEPTION para tratamento de erros.

  1. Suporte a Recursos Avançados:

Cada sistema de banco de dados pode ter seu próprio conjunto de recursos avançados e extensões para procedimentos armazenados. Por exemplo, o PostgreSQL suporta várias linguagens além do PL/pgSQL, permitindo o uso de linguagens como PL/Python, PL/Perl, etc., para procedimentos armazenados.

  1. Modelo de Segurança:

Os modelos de segurança para procedimentos armazenados podem ser diferentes. O SQL Server, por exemplo, integra-se à autenticação do Windows, enquanto o MySQL e o PostgreSQL geralmente dependem de seus sistemas de gerenciamento de usuários.

  1. Ferramentas e Gerenciamento:

As ferramentas disponíveis para desenvolver, gerenciar e depurar procedimentos armazenados podem variar entre os sistemas de banco de dados. O SQL Server possui o SQL Server Management Studio (SSMS), o MySQL usa ferramentas como o MySQL Workbench, e o PostgreSQL possui ferramentas como o pgAdmin.

  1. Compatibilidade:

A portabilidade de procedimentos armazenados entre esses bancos de dados pode ser limitada devido a diferenças na sintaxe e nos recursos. Se você planeja mudar de sistema de banco de dados, pode ser necessário modificar seus procedimentos armazenados de acordo.

Qual é a motivação por trás do uso de procedimentos de banco de dados?

Procedures de banco de dados são uma boa feature para encapsular lógica de negócios, validar campos e proteger seus dados. No entanto, na minha opinião, eu nunca os usaria para alcançar esses objetivos. A melhor maneira de fazer essas coisas é usar uma API, onde você pode encapsulá-las.

Prefiro usar procedimentos para obter informações sobre as entidades do banco de dados, como tabelas, usuários e índices.

Tabela

Stored Procedure Descrição
sp_help Fornece informações sobre um banco de dados, uma tabela, uma visualização ou um índice.
sp_who Exibe informações sobre usuários e processos atuais.
sp_configure Exibe ou altera configurações globais.
sp_who2 Semelhante a sp_who, mas fornece informações mais detalhadas.
sp_spaceused Exibe a quantidade de espaço usado e reservado por uma tabela.
sp_rename Renomeia um objeto criado pelo usuário no banco de dados atual.
sp_helptext Exibe a definição de uma regra, padrão ou trigger definido pelo usuário.
sp_adduser Adiciona uma nova conta de login do SQL Server.
sp_addlogin Adiciona um novo login para o SQL Server.
sp_helpindex Exibe informações sobre índices em uma tabela.
sp_depends Exibe informações sobre dependências de um objeto.
sp_helpconstraint Exibe informações sobre as constraints de uma table.

Usabilidade

Em uma query SQL, você pode rodar o comando abaixo e recuperar a information de uma tabela, por exemplo:

exec sp_help 'table_name'

Top comments (0)