O que é um procedimento armazenado?
definição:
Escreva antecipadamente tarefas comumente usadas ou muito complexas com instruções SQL e armazene-as com um nome especificado. Então, quando quiser solicitar ao banco de dados que forneça serviços com as mesmas funções dos procedimentos armazenados definidos no futuro, você só precisará chamar execute. . Comandos de preenchimento automático.
Neste ponto, alguém pode perguntar: Então um procedimento armazenado é apenas um monte de instruções SQL?
Por que a Microsoft deseja adicionar esta tecnologia?
Então, qual é a diferença entre procedimentos armazenados e instruções SQL comuns?
Vantagens dos procedimentos armazenados:
1. Os procedimentos armazenados só são compilados quando são criados. Não há necessidade de recompilar cada vez que o procedimento armazenado for executado no futuro. Geralmente, as instruções SQL são compiladas uma vez sempre que são executadas, portanto, o uso de procedimentos armazenados pode melhorar a execução. velocidade do banco de dados.
2. Ao realizar operações complexas no banco de dados (como atualizar, inserir, consultar, excluir em várias tabelas), essa operação complexa pode ser encapsulada em um procedimento armazenado e usada em conjunto com o processamento de transações fornecido pelo banco de dados.
3. Os procedimentos armazenados podem ser reutilizados, o que pode reduzir a carga de trabalho dos desenvolvedores de banco de dados
4. Alta segurança, você pode definir que apenas um determinado usuário tenha o direito de usar o processo armazenado especificado
Tipos de procedimentos armazenados:
1. Procedimentos armazenados do sistema: começando com sp_, usado para configurar o sistema, obter informações e trabalhos de gerenciamento relacionados, como sp_help, que é usado para obter informações relevantes sobre o objeto especificado.
2. O procedimento armazenado estendido começa com XP_ e é usado para chamar funções fornecidas pelo sistema operacional.
mestre executivo..xp_cmdshell 'ping 10.8.16.1'
3. Procedimentos armazenados definidos pelo usuário, é o que chamamos de procedimentos armazenados
Formatos comuns
Criar procedimento nome_procedimento
[@parameter data_type][saída]
[com]{recompilar|criptografia}
como
declaração_ql
explicar:
saída: indica que este parâmetro pode ser retornado
com {recompilar | criptografia}
recompilar: significa que este procedimento armazenado será recompilado toda vez que for executado.
criptografia: o conteúdo do procedimento armazenado criado será criptografado
como:
O conteúdo do livro de mesa é o seguinte
Preço do título do livro numerado
001 Introdução à linguagem C$30
002 Desenvolvimento de relatório PowerBuilder$52
Exemplo 1: Procedimento armazenado para consultar o conteúdo da tabela Book
criar processo query_book
como
selecione * do livro
ir
executivo query_book
Exemplo 2: Adicionar um registro ao livro da tabela e consultar o valor total de todos os livros desta tabela
Criar processo insert_book
@param1 char(10),@param2 varchar(20),@param3 dinheiro,@param4 saída de dinheiro
com criptografia ----------criptografia
como
inserir livro(número, título do livro, preço) Valores(@param1,@param2,@param3)
selecione @param4=sum(price) do livro
ir
Exemplo de execução:
declarar dinheiro @total_price
exec insert_book '003','Guia de desenvolvimento de controle Delphi',$100,@total_price
print 'O valor total é'+convert(varchar,@total_price)
ir
Três tipos de valores de retorno de procedimentos armazenados:
1. Retorne o número inteiro com Return
2. Retornar parâmetros no formato de saída
3. Conjunto de registros
A diferença entre os valores retornados:
Tanto a saída quanto o retorno podem ser recebidos como variáveis no programa em lote, e o conjunto de registros é passado de volta ao cliente que executa o lote.
Exemplo 3: Existem duas tabelas, Produto e Pedido, com o seguinte conteúdo:
Produto
Número do produto Nome do produto Quantidade do pedido do cliente
001 caneta 30
002 escova 50
003 Lápis 100
Ordem
Número do produto Nome do cliente Depósito do cliente
001 Distrito de Nanshan$30
002 Distrito de Luohu$50
003 Distrito Baoan$4
Use o número como condição de conexão para conectar as duas tabelas em uma tabela temporária. Esta tabela contém apenas o nome do produto.
Valor total = depósito * quantidade do pedido, a tabela temporária é colocada no processo de armazenamento
O código é o seguinte:
Criar processo temp_sale
como
selecione a.Número do produto, a.Nome do produto,b.Nome do cliente,b.Depósito do cliente,a.Quantidade do pedido do cliente* b.Depósito do cliente como valor total
em #temptable do Produto a junção interna Pedido b em a.número do produto=b.número do produto
se @@erro=0
imprima 'Bom'
outro
imprima 'Falha'