Usar stored procedures é uma maneira fácil de economizar tempo, evitando a necessidade de escrever repetidamente as mesmas linhas de código e também acelerar a chamada e a execução da consulta desejada.
Mas o que você sabe sobre stored procedures, como elas funcionam e quais vantagens elas oferecem aos usuários?
Neste artigo, você aprenderá o que é um stored procedure, seus benefícios, como ele se diferencia em comparação com as funções, como criar um stored procedure e, por último, como usar stored procedures em análise incorporada.
O que é um Stored Procedure?
Um stored procedure é um conjunto de instruções SQL e outros construtos PL/SQL armazenados em um sistema de gerenciamento de banco de dados relacional (RDBMS) como um grupo que você pode salvar e reutilizar repetidamente. Um stored procedure pode consistir em várias instruções SQL, como SELECT, INSERT, UPDATE ou DELETE. Eles são executados como uma unidade e são usados para resolver um problema específico ou executar um conjunto de tarefas relacionadas. Isso significa que, se você precisar de uma consulta SQL e escrevê-la repetidamente, poderá salvá-la como um stored procedure e, em seguida, chamá-la para executar a consulta.

Se você estiver usando o Microsoft SQL Server, poderá encontrar stored procedures expandindo o nó Programabilidade sob seu banco de dados no Explorador de Objetos do SQL Server Management Studio.

Benefícios de usar Stored Procedures.
Stored procedures são um dos tópicos de banco de dados mais usados e populares, e, como tal, oferecem uma série de benefícios. O uso de stored procedures pode simplificar e acelerar a execução de consultas SQL.
Por exemplo, os stored procedures podem reduzir o tráfego de rede entre servidores e clientes. Isso ocorre porque os comandos são executados como um único lote de código – portanto, em vez de cada linha de código ser enviada para execução individualmente, apenas a chamada para executar o stored procedure é enviada para o servidor.
Aqui estão alguns dos outros benefícios de usar stored procedures:
Manutenibilidade.
A manutenção de um stored procedure é bastante fácil no servidor, em contraste com a manutenção de cópias em vários computadores clientes.
Além disso, os scripts dos procedimentos são armazenados em um local, mas os stored procedures podem ser usados livremente em outros aplicativos também. Em caso de alteração da definição, isso não é um problema, pois apenas o stored procedure será afetado e não o aplicativo que o chama.
Desempenho e Eficiência.
Os stored procedures são compilados apenas uma vez e, em seguida, podem ser usados várias vezes. Isso economiza muito tempo, evitando a necessidade de escrever as mesmas coisas várias vezes, se você estiver fazendo consultas ad hoc, e oferece uma pequena vantagem de desempenho na primeira execução de um stored procedure em comparação com a primeira execução de uma consulta ad hoc.
Inclui Lógica de Negócios Complexa.
Embora não seja o melhor lugar para lógica de negócios complexa, um stored procedure é basicamente uma chamada de função em um banco de dados. Você pode incluir instruções IF, loops, verificações de segurança e muito mais para garantir que os dados corretos sejam enviados de volta para a chamada do stored procedure.
Embora seja um pouco debatível, dependendo das habilidades de sua equipe, as melhores práticas tendem a colocar a lógica de negócios de um aplicativo no lado do aplicativo. No entanto, stored procedures e T-SQL são sintaxes muito poderosas para execução de lógica.
Fácil de Modificar.
Você pode alterar rapidamente uma ou mais instruções em um stored procedure com a ajuda do comando ALTER PROCEDURE, o que torna muito rápido e fácil atualizar os resultados enviados de volta para o aplicativo que o chama. Ao contrário de um componente de camada intermediária que inclui lógica de negócios, que exigiria uma reimplementação potencialmente dispendiosa, uma alteração rápida em um stored procedure leva segundos.
Considere este stored procedure, onde o valor de @OrdYear é codificado. Um desenvolvedor ou administrador de banco de dados pode atualizar facilmente a variável @OrdYear usando o comando ALTER PROCEDURE.
ALTER PROCEDURE [dbo].[SalesByCategory]
@CategoryName nvarchar(15), @OrdYear nvarchar(4) = '1998'
AS
IF @OrdYear != '1996' AND @OrdYear != '1997' AND @OrdYear != '1998'
BEGIN
SELECT @OrdYear = '1998'
END
SELECT ProductName,
TotalPurchase=ROUND(SUM(CONVERT(decimal(14,2), OD.Quantity * (1-OD.Discount) * OD.UnitPrice)), 0)
FROM [Order Details] OD, Orders O, Products P, Categories C
WHERE OD.OrderID = O.OrderID
AND OD.ProductID = P.ProductID
AND P.CategoryID = C.CategoryID
AND C.CategoryName = @CategoryName
AND SUBSTRING(CONVERT(nvarchar(22), O.OrderDate, 111), 1, 4) = @OrdYear
GROUP BY ProductName
ORDER BY ProductName
– a análise, por si só, ajuda as empresas a reduzir o risco de fraude e proteger melhor seus dados. Essas ferramentas podem identificar padrões para detectar e prevenir comportamentos fraudulentos, para que as empresas possam ter certeza. Um exemplo é o setor de seguros. Com base no comportamento passado dos solicitantes,
Outro grande benefício de usar stored procedures é a segurança que ele oferece à sua fonte de dados. Você pode aumentar a segurança de um aplicativo usando stored procedures, restringindo o acesso não autorizado. Por exemplo, você pode conceder a alguém acesso a um procedimento que atualiza a tabela do banco de dados sem permitir o acesso à própria tabela. Você também pode usar stored procedures para "ocultar" os nomes das tabelas subjacentes do usuário final do stored procedure. Como o chamador do stored procedure tem apenas o nome do stored procedure, e não o nome das tabelas usadas no stored procedure, ele não poderá acessar diretamente as tabelas com seus dados de forma maliciosa.
Diferenças entre Stored Procedures e Funções.
Stored procedures e funções são objetos de banco de dados que contêm conjuntos de instruções SQL para concluir tarefas. E, embora possam parecer a mesma coisa à primeira vista, eles são bastante diferentes.
Estas são algumas das coisas que diferenciam stored procedures e funções:
- As funções podem ser chamadas de um stored procedure, enquanto um stored procedure não pode ser chamado de uma função.
- Uma função não permite parâmetros de saída, enquanto um stored procedure permite parâmetros de entrada e saída.
- Você não pode gerenciar transações dentro de uma função, mas pode fazê-lo dentro de um stored procedure.
- Você pode chamar uma função usando uma instrução select, mas não pode chamar um stored procedure usando uma instrução select.
- Uma função tem um tipo de retorno e retorna um valor, enquanto um stored procedure não tem um tipo de retorno e retornar um valor é opcional.
- Uma função permite apenas uma instrução SELECT nela, enquanto um stored procedure permite SELECT, INSERT, UPDATE e DELETE.
- Um procedimento armazenado pode ser usado para ler e modificar dados, enquanto uma função só pode ler dados.
- Uma função pode ser incorporada em uma instrução SELECT, enquanto um procedimento armazenado não pode ser usado em uma instrução SELECT.
- Uma função não pode retornar vários conjuntos de resultados, enquanto um procedimento armazenado pode.
- Podemos usar transações em procedimentos armazenados, mas elas não são permitidas em funções.
Como criar um Stored Procedure?
Criar um novo procedimento armazenado é simples. Existem 3 etapas básicas:
- Na SQL Server Object Explorer, clique com o botão direito em o nó Procedimentos armazenados em Programabilidade.

- No modelo Novo procedimento armazenado, modifique a instrução CREATE PROCEDURE para incluir as tabelas, parâmetros e opções de consulta para retornar os dados desejados do procedimento armazenado.

- Clique no Execute o botão na barra de ferramentas para compilar e salvar seu procedimento armazenado..

Existem várias ferramentas para criar procedimentos armazenados, usar o SQL Server Management Studio interativo é a maneira mais fácil, pois oferece uma maneira fácil de começar a se conectar a muitos tipos diferentes de servidores de banco de dados, incluindo Azure e SQL Server Analysis Services.
Como usar Stored Procedures em Análise Incorporada?
Ao usar o Reveal Embed SDK existem 2 maneiras de usar procedimentos armazenados.
- Ao criar uma nova visualização em um banco de dados que oferece suporte a procedimentos armazenados, você verá uma lista de procedimentos armazenados disponíveis. Você tratará o procedimento armazenado selecionado como qualquer outra fonte de dados no Reveal, a única diferença sendo um procedimento armazenado parametrizado, que você pode usar em um filtro, passando variáveis para o procedimento armazenado.

Você pode assistir a um vídeo rápido de 6 minutos sobre como usar procedimentos armazenados por meio da interface do usuário do Reveal aqui:
- Como o Reveal é um SDK, você também tem controle programático completo sobre procedimentos armazenados e parâmetros por meio de código. Para passar um nome de procedimento armazenado, juntamente com quaisquer parâmetros necessários, use a função ChangeVisualizationDataSourceItemAsync. Este exemplo demonstra como passar um procedimento armazenado chamado CustOrderHist e passar o parâmetro CustomerID.
public async override Task<RVDataSourceItem> ChangeVisualizationDataSourceItemAsync
(string userId, string dashboardId, RVVisualization visualization,
RVDataSourceItem dataSourceItem)
{
if (dashboardId == "StoredProcNorthWind")
{
var msSqlDsi = dataSourceItem as RVSqlServerDataSourceItem;
if (msSqlDsi?.Procedure == "CustOrderHist")
{
msSqlDsi.ProcedureParameters["@CustomerID"] = "AROUT";
}
else
{
msSqlDsi.Procedure = "MyProcedure";
msSqlDsi.ProcedureParameters["@SampleParam"] = "SampleParamValue";
}
return dataSourceItem;
}
}
Resumo.
Os procedimentos armazenados são uma ferramenta poderosa para consultar um banco de dados e retornar resultados para um aplicativo de chamada. Você deve considerar o uso de procedimentos armazenados para simplificar a maneira como você apresenta dados aos usuários do Reveal SDK e para simplificar a forma como você lida com parâmetros no código do seu aplicativo, em vez de usar consultas ad-hoc longas e propensas a erros.
Você pode aprender mais sobre Reveal, a solução de análise incorporada. e como ele funciona, acessando agendando uma demonstração rápida ou Tome decisões baseadas em dados.
Libere mais horas por dia
Simplifique e acelere a execução de consultas SQL com o Reveal Embedded Analytics
