MySQL-- procedimentos armazenados, variáveis locais e variáveis de usuário [@] (entendimento inicial)
Para mais informações sobre o banco de dados, adicione a atenção yo ~ ~. Para os blogueiros por favor contacte Gabor principal carta particular ou contato:
QQ: 3327908431
micro carta: ZDSL1542334210
Prefácio: procedimentos armazenados, uma maneira fantástica para aprender a não aprender procedimento armazenado MySQL não está completa, então ele realmente mágico Onde? bloggers declaração de hoje levá-lo para os procedimentos secretos armazenados ... Aham ... Eu admito que eu tenho instalado o *. Bloggers salientar é entendida como uma função de auto! Por favor, siga meus passos lentamente chegando ~~
1. O que é um procedimento armazenado
1.1 Definição e papel do procedimento armazenado
Ou procedimento armazenado é um conjunto de várias instruções SQL, procedimentos armazenados pode nos ajudar: 1, as operações de aerodinâmica, reduzir etapas redundantes, 2, reduzir os erros durante a operação, melhorar a eficiência do trabalho. Então procedimento armazenado é útil, você deve aprender e usá-lo tanto quanto possível. Bloggers-se entendido como uma função de auto, mas com funções diferentes e de diferente é que ele pode ser salvos diretamente a ser usado diretamente no MySQL dentro, enquanto a função foi executada após a auto ou pacote antes de chamar.
1.1 Estabelecimento e recuperar procedimento armazenado
delimiter // # 实现两个整数相加的存储过程
create procedure test(in a int, in b int) #创建存储过程
begin
<你想要实现的SQL功能语句>
end //
delimiter ;
call test(2, 3); # 调用存储过程
Interpretação: 'delimitador //' símbolo é um conjunto final MySQL para '//'. Porque MySQL declaração padrão símbolo terminator ';', e durante o armazenamento, a fim de evitar SQL conflitos Instrução Terminator precisa 'DELIMITER' procedimento de caráter armazenados mudança final, e '// end' fim do procedimento armazenado. Após conclusão do procedimento armazenado é definido utilizando uma 'delimitador;' restaurar o terminador padrão.
Criar um procedimento armazenado: create procedure <存储过程名称> (in a int, in b int) # 输入参数a和b,且指定为整型
No início ... escrever end seu código dentro da instrução função. 'Chamar' para chamar apenas para escrever procedimentos armazenados. Claro que, se o procedimento armazenado não precisa ser excluído drop procedure <你创建存储过程的名称>
. Você cria um procedimento armazenado no banco de dados atual Stored Procedures
dentro:
2, variáveis locais e variáveis de usuário
2.1 As variáveis locais
É uma maneira de valores atribuir a variáveis, mas só pode ser declarado e utilizado no subprograma, ou seja, começar ... bloco final do código, que funciona em instruções SQL que você deseja alcançar no. Atribuí-la a uma variável (lembre-se só começam ... end utilização no interior, a partir da boca não pode usar):
a. 使用set语句为变量赋值:
declare test int; # 介入一个赋值变量test
set test = 1 + 2; # 对该变量进行传值
b. 使用select…into为变量赋值:
declare test int; # 介入一个赋值变量test
select 1 + 2 into test; # 对该变量进行传值
2.2 variáveis de usuário
O método também é uma atribuição de variável, variáveis de usuário e links relacionados a um variáveis definidas pelo cliente não pode ser visto ou usar outros clientes, que é o nosso comum variável. Quando as saídas do cliente, todas as variáveis ligadas clientes será automaticamente liberado. Especificamente, deve ser atribuído a uma variável, não é começar ... bloco de fim do limite de código, variáveis locais e métodos de intervenção formar diferente, é uma forma de "@var_name", não precisa declarar definido. Atribuído para:
a. 使用SET语句为变量赋值:
set @test = 1 + 2;
select @test;
b. 使用select …into为变量赋值:
select 1 + 2 into @test;
select @test;
Terminado o conhecimento teórico, não está sujeito à erosão no ponto, onde encontrar as pérolas enterradas dentro da terra?
3, a secção título
Um Título: Eu escrevo a mesma função e função de soma de um procedimento armazenado para completar a adição de dois números
delimiter // # 法一 用户变量
create procedure sums(in a int,in b int)
begin
select a+b into @sumvalue; #这里是用户变量,看“@”符号
select @sumvalue;
end //
delimiter ;
call sums(32,32); # 调用存储过程
-- -----------------------------------------------------------------------------
delimiter // # 法二 局部变量
create procedure sumss(in a int,in b int)
begin
declare valus int
select a+b into valus; #这里是局部变量,无“@”符号
select valus;
end //
delimiter ;
call sumss(32,32); # 调用存储过程
# 结果为:64
Título II: Por favor, escreva um procedimento armazenado para completar a adição de dois números subtraindo-se o terceiro número
delimiter //
create procedure texts(in a int,in b int,in c int)
begin
select (a+b)/c into @sumvalue; #这里是用户变量,看“@”符号
select @sumvalue;
end //
delimiter ;
call texts(2,4,6); # 调用存储过程
# 结果为:
1.00
Título três (parâmetro OUT): Por favor, escreva um procedimento armazenado, após a conclusão da adição de dois números para o terceiro número
-- out类型参数
delimiter //
create procedure outtest(in a int, in b int, out c int)
begin
select a+b into c;
-- select c;
end //
delimiter ;
call outtest(3,3,@c);
# 结果为
6
Você pode ver, os parâmetros e método de atribuição não é o mesmo que dois ou mais parâmetros, os parâmetros não precisam ser declarados fora e definido, é só usar a especificada nele, no parâmetro de saída é a saída final.
4, o fim dos ovos de papel - fácil momento
Realmente que promete uma boa colheita Agora, isso não é apenas passado Dia Nacional Bem, o dia antes de ir para a sua casa para ver o Cubs e irmã-de-lei, então ele foi para trazê-los para casa com o irmão brilhante, irmã-de-lei serra neste momento para amamentar o seu filho, irmã-de-lei chamada Cubs obter frutos secos para nós para comer, então é irmão brilhante por cortesia, e assim veio a ele para tocar o rosto da criança, disse: então "bebê bom menino, brilhante pele agradável, muito bom,!" minha irmã-de-lei corou e sussurrou: "as crianças dormiram, cara ali ..." e então eu vi, muito bom pele é muito branca ...
Hoje para terminar aqui yo // cada artigo tem o fim do ovo - relaxado momento yo ~ acrescido de juros de aprender mais sobre o conhecimento MySQL! Obrigado por assistir, eu estava Jetuser-dados
Links: [https://blog.csdn.net/L1542334210]
CSND: L1542334210
Desejo-lhe todo o sucesso! diversão em família!