O que é um procedimento armazenado?

O que é um procedimento armazenado? Como funcionam? Qual é a composição de um procedimento armazenado (as coisas que cada deve ter de ser um procedimento armazenado)?

Author: George Stocker, 2009-01-20

15 answers

Os procedimentos armazenados são um lote de declarações SQL que podem ser executadas de várias maneiras. A maioria dos principais DBMs suportam procedimentos armazenados; no entanto, nem todos o fazem. Você terá que verificar com a sua documentação de Ajuda DBMS particular para detalhes específicos. Como estou mais familiarizado com o servidor SQL vou usar isso como minhas amostras.

Para criar um procedimento armazenado, a sintaxe é bastante simples:

CREATE PROCEDURE <owner>.<procedure name>

     <Param> <datatype>

AS

     <Body>

Por exemplo:

CREATE PROCEDURE Users_GetUserInfo

    @login nvarchar(30)=null

AS

    SELECT * from [Users]
    WHERE ISNULL(@login,login)=login
Um benefício dos procedimentos armazenados é que você pode centralizar lógica de acesso de dados em um único lugar que é, então, fácil para DBA's para otimizar. Os procedimentos armazenados também têm um benefício de segurança em que você pode conceder direitos de execução para um procedimento armazenado, mas o Usuário não precisará ter permissões de leitura/escrita nas tabelas subjacentes. Este é um bom primeiro passo contra a injecção de SQL.

Os procedimentos armazenados vêm com desvantagens, basicamente a manutenção associada à sua operação básica CRUD. Digamos que para cada mesa você tem uma inserção, Atualizar, excluir e pelo menos uma seleção com base na chave primária, isso significa que cada tabela terá 4 procedimentos. Agora pegue uma base de dados de tamanho decente de 400 mesas, e você tem 1600 procedimentos! E isso assumindo que não tens duplicados, o que provavelmente terás.

Aqui é onde usar um ORM ou outro método para gerar automaticamente as suas operações básicas CRUD tem uma tonelada de mérito.

 207
Author: JoshBerke, 2017-11-22 18:51:43

Um procedimento armazenado é um conjunto de instruções SQL pré-compilados que são usados para executar uma tarefa especial.

Exemplo: se eu tiver um Employee quadro

Employee ID  Name       Age  Mobile
---------------------------------------
001          Sidheswar  25   9938885469
002          Pritish    32   9178542436

Primeiro estou a recuperar a tabela Employee:

Create Procedure Employee details
As
Begin
    Select * from Employee
End

Para executar o procedimento no servidor SQL:

Execute   Employee details

--- (Employee details is a user defined name, give a name as you want)

Depois, em segundo lugar, estou a inserir o valor na tabela dos empregados

Create Procedure employee_insert
    (@EmployeeID int, @Name Varchar(30), @Age int, @Mobile int)
As
Begin
    Insert Into Employee
    Values (@EmployeeID, @Name, @Age, @Mobile)
End

Para executar o procedimento parametrizado no servidor SQL:

Execute employee_insert 003,’xyz’,27,1234567890

  --(Parameter size must be same as declared column size)
Exemplo: @Name Varchar(30)

Na tabela de Employee Name o tamanho da coluna deve ser varchar(30).

 132
Author: sidhewsar, 2017-01-18 19:14:58

Um procedimento armazenado é um grupo de declarações SQL que foi criado e armazenado na base de dados. Um procedimento armazenado irá aceitar parâmetros de entrada para que um único procedimento possa ser usado na rede por vários clientes usando diferentes dados de entrada. Os procedimentos armazenados irão reduzir o tráfego de rede e aumentar o desempenho. Se modificarmos um procedimento armazenado, todos os clientes receberão o procedimento de armazenamento atualizado.

Amostra da criação de uma procedimento

CREATE PROCEDURE test_display
AS
    SELECT FirstName, LastName
    FROM tb_test;

EXEC test_display;
Vantagens da utilização de procedimentos armazenados
  • Um procedimento armazenado permite a programação modular.

    Você pode criar o procedimento uma vez, armazená-lo na base de dados, e chamá-lo em qualquer número de vezes em seu programa.

  • Um procedimento armazenado permite uma execução mais rápida.

    Se a operação requer uma grande quantidade de código SQL que é realizada repetitivamente, os procedimentos armazenados podem ser mais rápidos. Eles são analisados e otimizados quando eles são executadas pela primeira vez, e uma versão compilada do procedimento armazenado permanece em um cache de memória para uso posterior. Isto significa que o procedimento armazenado não precisa ser reparado e reaberto com cada uso, resultando em tempos de execução muito mais rápidos.

  • Um procedimento armazenado pode reduzir o tráfego de rede.

    Uma operação que requer centenas de linhas de código Transact-SQL pode ser realizada através de uma única declaração que executa o código num procedimento, em vez de enviar centenas de linhas de código na rede.

  • Os procedimentos armazenados proporcionam uma maior segurança aos seus dados

    Os usuários podem ter permissão para executar um procedimento armazenado, mesmo que não tenham permissão para executar as declarações do procedimento diretamente.

    No servidor SQL temos diferentes tipos de procedimentos armazenados:

    • procedimentos armazenados no sistema
    • procedimentos armazenados definidos pelo Utilizador
    • prolongado armazenado Procedimentos
  • Sistema -os procedimentos armazenados são armazenados na base de dados principal e estes começam com um prefixo sp_. Estes procedimentos podem ser usados para executar uma variedade de tarefas para suportar funções de servidor SQL para chamadas de aplicações externas nas tabelas do sistema

    Exemplo: sp_ helptext [StoredProcedure_Name]

  • Os procedimentos armazenados definidos pelo Utilizador são normalmente armazenados numa base de dados de utilizadores e são normalmente concebidos para completar a tarefas na base de dados do utilizador. Ao codificar estes procedimentos não use o prefixo sp_ porque se usarmos o prefixo sp_ Primeiro, ele irá verificar a base de dados principal, e depois vem para a base de dados definida pelo utilizador.

  • Procedimentos EXTENDIDOS são os procedimentos que chamam funções a partir de ficheiros DLL. Hoje em dia, os procedimentos estocados estendidos são depreciados pela razão de que seria melhor evitar o uso de procedimentos estocados estendidos.

 67
Author: Kanwar Singh, 2018-02-15 20:02:12

Geralmente, um procedimento armazenado é uma função SQL."Eles têm:

-- a name
CREATE PROCEDURE spGetPerson
-- parameters
CREATE PROCEDURE spGetPerson(@PersonID int)
-- a body
CREATE PROCEDURE spGetPerson(@PersonID int)
AS
SELECT FirstName, LastName ....
FROM People
WHERE PersonID = @PersonID
Este é um exemplo focado em T-SQL. Os procedimentos armazenados podem executar a maioria das declarações SQL, retornam valores escalares e baseados em tabelas, e são considerados mais seguros porque eles impedem ataques de injeção SQL.
 31
Author: Dave Swersky, 2013-06-13 10:53:23
Pensa numa situação destas.
    Tem uma base de dados com dados. Existem várias aplicações diferentes necessárias para aceder a essa base de dados central e, no futuro, também algumas novas aplicações.
  • Se você vai inserir as consultas da base de dados incorporada para acessar a base de dados central, dentro do código de cada aplicação individualmente, então provavelmente você tem que duplicar a mesma consulta de novo e de novo dentro do código de diferentes aplicações.
  • nisso tipo de situação, você pode usar procedimentos armazenados (SPs). Com procedimentos armazenados, você está escrevendo número de consultas comuns (procedimentos) e armazená-los com a base de dados central.
  • Agora a duplicação de trabalho nunca acontecerá como antes e o acesso aos dados e a manutenção serão feitos centralmente.

Nota:

  • na situação acima, você pode se perguntar " Por que não podemos introduzir um servidor central de acesso de dados para interagir com todas as aplicações? Sim. Que será possivel. Mas,
  • a principal vantagem com o SPs sobre essa abordagem é que, ao contrário do seu código de acesso aos dados com consultas internas, o SPs são declarações pré-compiladas, por isso irão executar mais rapidamente. E os custos de comunicação (através das redes) serão mínimos.
  • em frente a isso, o SPs irá adicionar mais carga ao servidor de base de dados. Se isso seria uma preocupação de acordo com a situação, um servidor de acesso de dados centralizado com consultas inline será uma melhor escolha.
 13
Author: Supun Wijerathne, 2017-01-19 06:31:47

Um procedimento armazenado é utilizado principalmente para executar certas tarefas numa base de dados. Por exemplo

  • Obter conjuntos de resultados de bases de dados a partir de alguma lógica de negócios em dados.
  • executar várias operações de base de dados numa única chamada.
  • usado para migrar dados de uma tabela para outra tabela.
  • pode ser chamado para outras linguagens de programação, como Java.
 6
Author: MAA, 2017-01-19 06:01:52

Um procedimento armazenado não passa de um grupo de declarações SQL compiladas num único plano de execução.

  1. cria uma vez e chama-lhe n número de vezes
  2. Reduz o tráfego de rede

Exemplo: criação de um procedimento armazenado

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE GetEmployee
      @EmployeeID int = 0
AS
BEGIN
      SET NOCOUNT ON;

      SELECT FirstName, LastName, BirthDate, City, Country
      FROM Employees 
      WHERE EmployeeID = @EmployeeID
END
GO

Alterar ou modificar um procedimento armazenado:

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

ALTER PROCEDURE GetEmployee
      @EmployeeID int = 0
AS
BEGIN
    SET NOCOUNT ON;

    SELECT FirstName, LastName, BirthDate, City, Country
    FROM Employees 
    WHERE EmployeeID = @EmployeeID
END
GO

Largar ou apagar um procedimento armazenado:

DROP PROCEDURE GetEmployee
 5
Author: user5723819, 2016-10-01 08:28:18

Um procedimento armazenado é usado para recuperar dados, modificar dados e Apagar Dados na tabela de banco de dados. Você não precisa escrever um comando SQL inteiro cada vez que você quer inserir, atualizar ou excluir dados em uma base de dados SQL.

 5
Author: venkat, 2017-01-19 06:02:41
  • Um procedimento armazenado é um conjunto pré-compilado de uma ou mais declarações SQL que executam alguma tarefa específica.

  • Um procedimento armazenado deve ser executado isoladamente, utilizando EXEC

  • Um procedimento armazenado pode devolver vários parâmetros

  • Um procedimento armazenado pode ser utilizado para implementar o transact

 3
Author: Kedarnath M S, 2017-01-19 06:32:57

"O que é um procedimento armazenado" já é respondido em outros posts aqui. O que eu vou postar é uma forma menos conhecida de usar o procedimento armazenado. É grouping stored procedures ou numbering stored procedures.

Referência De Sintaxe

enter image description here

; number de acordo com

Um número inteiro opcional que é utilizado para agrupar procedimentos com o mesmo nome. Estes procedimentos agrupados podem ser largados em conjunto usando um procedimento de gota declaração

Exemplo

CREATE Procedure FirstTest 
(
     @InputA INT
)
AS 
BEGIN

SELECT 'A' + CONVERT(VARCHAR(10),@InputA)

END
GO

CREATE Procedure FirstTest;2
(
     @InputA INT,
     @InputB INT
)
AS 
BEGIN

SELECT 'A' + CONVERT(VARCHAR(10),@InputA)+ CONVERT(VARCHAR(10),@InputB)

END
GO

Utilização

exec FirstTest 10
exec FirstTest;2 20,30

Resultado

enter image description here

Outra Tentativa

CREATE Procedure SecondTest;2
(
     @InputA INT,
     @InputB INT
)
AS 
BEGIN

SELECT 'A' + CONVERT(VARCHAR(10),@InputA)+ CONVERT(VARCHAR(10),@InputB)

END
GO

Resultado

Msg 2730, Nível 11, Estado 1, Procedimento Segundo, Linha 1 [Linha De Início Do Lote 3] Não é possível criar o procedimento 'SecondTest' com um número de grupo de 2 porque um procedimento com o mesmo nome e um número de grupo de 1 não existe atualmente na base de dados. Deve executar o procedimento criar 'segunda tentativa'; 1 Primeiro.

Referências:

  1. criar um procedimento com a sintaxe do número
  2. procedimentos armazenados numerados no servidor SQL - techie-friendly.blogspot.com
  3. agrupamento dos procedimentos armazenados-sqlmag

Atenção

    Depois de agrupar os procedimentos, não os pode deixar cair individualmente.
  1. esta funcionalidade pode ser removida num future version of Microsoft SQL Server.
 2
Author: Lijo, 2017-08-15 18:34:21

Um procedimento armazenado é uma coleção chamada de declarações SQL e lógica processual I. E., compilada, verificada e armazenada na base de dados do servidor. Um procedimento armazenado é tipicamente tratado como outros objetos de banco de dados e controlado através do mecanismo de segurança do servidor.

 0
Author: Nirmala Hansdak, 2017-01-19 06:03:25

Em um DBMS, um procedimento armazenado é um conjunto de declarações SQL com um nome atribuído que é armazenado na base de dados em forma compilada para que possa ser compartilhado por um número de programas.

A utilização de um procedimento armazenado pode ser útil em

  1. Fornecer um acesso controlado aos dados (os utilizadores finais só podem introduzir ou alterar dados, mas não podem escrever procedimentos)

  2. Garantir a integridade dos dados (os dados seriam introduzidos de forma coerente) e

  3. Melhora a produtividade (as declarações de um procedimento armazenado só precisam ser escritas uma vez)

 0
Author: Naina, 2017-01-19 06:33:57

Para simples,

Procedimento armazenado são programas armazenados , UM programa / função armazenado na base de dados.

Cada programa armazenado contém um corpo que consiste numa declaração SQL. Esta declaração pode ser uma declaração composta por várias declarações separadas por um ponto-e-vírgula (;) caracteres.

CREATE PROCEDURE dorepeat(p1 INT)
BEGIN
  SET @x = 0;
  REPEAT SET @x = @x + 1; UNTIL @x > p1 END REPEAT;
END;
 0
Author: AZinkey, 2017-09-08 12:04:55

Os procedimentos armazenados no servidor SQL podem aceitar parâmetros de entrada e devolver vários valores dos parâmetros de saída; no servidor SQL, as declarações de programas de procedimentos armazenados para realizar operações na base de dados e devolver um valor de estado a um procedimento de chamada ou lote.

Os benefícios da utilização de procedimentos armazenados no servidor SQL

Eles permitem programação modular. Permitem uma execução mais rápida. Eles podem reduzir o tráfego de rede. Eles podem ser usados como um mecanismo de segurança. Toma. é um exemplo de um procedimento armazenado que toma um parâmetro, executa uma consulta e retorna um resultado. Especificamente, o procedimento armazenado aceita a capacidade empresarial como parâmetro e utiliza-a para corresponder à chave primária dosrecursos humanos.Mesa de funcionários para devolver o empregado solicitado.
> create procedure HumanResources.uspFindEmployee    `*<<<---Store procedure name`*
@businessEntityID                                     `<<<----parameter`
as
begin
SET NOCOUNT ON;
Select businessEntityId,              <<<----select statement to return one employee row
NationalIdNumber,
LoginID,
JobTitle,
HireData,
From HumanResources.Employee
where businessEntityId =@businessEntityId     <<<---parameter used as criteria
end
Aprendi isto com ... essential.com...it é muito útil.
 0
Author: Jerold Joel, 2017-09-13 07:37:18

O procedimento armazenado irá ajudá-lo a fazer o código no servidor.Você pode passar parâmetros e encontrar saída.

create procedure_name (para1 int,para2 decimal)
as
select * from TableName
 0
Author: Biddut, 2018-02-07 19:04:54