Procedure - SQL SERVER
- Amanda Nascimento

- 27 de nov. de 2023
- 3 min de leitura
Atualizado: 7 de ago.
Uma procedure (procedimento armazenado) é um conjunto de instruções SQL que são armazenadas no banco de dados e podem ser chamadas e executadas repetidamente. Elas são úteis para realizar tarefas complexas ou não, que precisam ser executadas com frequência, como consultas elaboradas, operações de atualização de dados ou cálculos específicos. As procedures podem aceitar parâmetros de entrada e retornar valores de saída, o que as torna flexíveis e reutilizáveis em diferentes partes de um sistema de banco de dados. Elas também ajudam a manter a lógica de negócios no banco de dados, o que pode melhorar a segurança e a consistência dos dados. As procedures são criadas usando a linguagem SQL (Structured Query Language) e podem ser chamadas a partir de outras instruções SQL, de aplicativos ou de outras procedures, tornando-as uma parte fundamental da programação de banco de dados.
🧩 DICA: Compartilhando aqui com vocês uma dica que recebi de um DBA: Crie a procedure vazia e depois faça a inserção de dados com o ALTER pois isso melhora a performance na execução, obrigando o SQL a recalcular o plano de execução da procedure.
Consultar procedures existentes

USE CORPORE; -- Substitua pelo nome do seu banco de dados
SELECT
SCHEMA_NAME(schema_id) AS SchemaName,
name AS ProcedureName,
FORMAT(create_date, 'dd/MM/yyyy') AS CreationDate,
FORMAT(modify_date, 'dd/MM/yyyy') AS LastModifiedDate,
USER_NAME(principal_id) AS CreatedByUser,
USER_NAME(principal_id) AS LastModifiedByUser
FROM sys.procedures
ORDER BY LastModifiedDate ASC

Consultar o script de uma procedure

USE CORPORE; -- Substitua pelo nome do seu banco de dados
GO
DECLARE @NomeDaProcedure NVARCHAR(100) = 'PRTABAGP'; -- Substitua pelo nome da sua procedure
DECLARE @Sql NVARCHAR(MAX);
SELECT @Sql = definition
FROM sys.sql_modules
WHERE object_id = OBJECT_ID(@NomeDaProcedure);
PRINT @Sql;
Resultado script procedure para importar um arquivo csv para o banco:

Criando procedures
🍁 Exemplo 1
CREATE PROCEDURE sp_lista_clientes
@cidade NVARCHAR(100)
AS
BEGIN
SELECT nome, email
FROM clientes
WHERE cidade = @cidade;
END;
--para executar a procedure: EXEC sp_lista_clientes 'São Paulo';
🍁 Exemplo 2
Remover linhas em branco ou null se determinadas colunas estiverem vazias:
Criar procedure:

CREATE PROCEDURE sp_RemoveLinhasEmBranco
AS
BEGIN
SET NOCOUNT ON;
DELETE FROM ouvidoria.dbo.faleunimed
WHERE (COLUNA1 = '' OR COLUNA1 IS NULL)
AND (COLUNA2 = '' OR COLUNA2 IS NULL)
AND (COLUNA3 = '' OR COLUNA3 IS NULL);
PRINT 'Linhas em branco removidas com sucesso.';
END;
GO
Depois que criamos a procedure, é preciso executá-la.
Executar procedure

EXEC sp_RemoveLinhasEmBranco;

Excluir procedures

DROP PROCEDURE IF EXISTS sp_RemoveLinhasEmBranco;
GO
Alterar nome de uma procedure

USE seubanco;
GO
-- Verifica se a procedure existe antes de renomear
IF EXISTS (
SELECT * FROM sys.objects
WHERE type = 'P' AND name = 'nome_procedure_existente'
)
BEGIN
-- Renomeia a procedure
EXEC sp_rename 'nome_procedure_existente', 'novo_nome_procedure';
PRINT 'Procedure renomeada com sucesso.';
END
ELSE
BEGIN
PRINT 'A procedure original não existe.';
END
GO
Procedures Nativas
O SQL Server já traz procedures nativas prontas para facilitar tarefas administrativas, como ver o tamanho de tabelas, listar colunas, exibir objetos e muito mais.


