MySql5.0 e posteriores suportam procedimentos armazenados. Recentemente, tive tempo para estudar isso.
Formatar:
CREATE PROCEDURE nome do processo ([parâmetros do processo[,...]]) |
CREATE FUNCTION nome da função ([parâmetros de função[,...]]) |
Parâmetros do procedimento:
[ IN | OUT | INOUT ] Nome do parâmetro Tipo de parâmetro
Parâmetros de função:
Nome do parâmetro Tipo de parâmetro
Tipo de retorno:
Tipo de dados MYSQL válido
Características:
IDIOMA SQL |
Corpo do procedimento/corpo da função: O formato é o seguinte:
COMEÇAR |
Não me importo com recursos proprietários aqui. Eles são incompatíveis com a especificação SQL, portanto, o conteúdo relevante da característica (recurso) não é considerado.
//
Há vários pontos a serem observados durante o processo de desenvolvimento:
1. Comentários de procedimento armazenado: MySQL suporta o uso de comentários -- ou /**/, onde o primeiro é um comentário de linha e o último é um comentário de segmento
2. As variáveis são declaradas primeiro com declarar. As variáveis temporárias podem ser modificadas diretamente com o prefixo @ para referência
3. Ao editar diretamente usando o gerenciador MySQL Administrator, você pode inserir diretamente o seguinte texto de função,
se importar automaticamente procedimentos ou funções armazenados
.no script, porque o padrão do MySQL é " ";" é o delimitador, então cada frase do corpo do procedimento
é compilada pelo MySQL como um procedimento armazenado, e o processo de compilação reportará um erro; portanto, a palavra-chave DELIMITER deve ser usada para declare antecipadamente que
o delimitador será restaurado quando o delimitador de segmento atual se esgotar. Conforme mostrado abaixo:
DELIMITOR $$ |
4. O MySQL suporta um grande número de funções integradas, algumas das quais são consistentes com grandes bancos de dados comerciais, como oracle, informix, sybase, etc., mas também existem algumas funções com nomes inconsistentes, mas consistentes ou algumas com funções consistentes; nomes, mas funções diferentes. Isso é especialmente útil para DBAs que foram transferidos do desenvolvimento de banco de dados e devem prestar atenção a eles.
5. Depuração de procedimentos ou funções armazenadas: ainda não estudei os vários kits de ferramentas fornecidos pelo MySQL e não tenho certeza se ele fornece ferramentas de depuração. No entanto, erros de compilação são relativamente fáceis de encontrar quando se trata de depuração de processos de negócios; use uma comparação A maneira estúpida é criar uma tabela de depuração e inserir um registro em cada ponto do processo no corpo do pacote para observar o processo de execução do programa. Este também é um método mais conveniente e estúpido. ^_^
A seguir estão dois exemplos, que fornecem um algoritmo de criptografia de string. Cada vezque
você o chama com os mesmos parâmetros de entrada, você obterá um resultado de criptografia diferente.
Eles são implementados na forma de funções e procedimentos como segue:
(1) Função,
por exemplo:
/**/ |
CRIAR FUNÇÃO fun_addmm(inpass varchar(10)) RETURNS varchar(11)
BEGIN
declarar string_in varchar(39)
;declarar string_out
varchar(78)
;declarar outpass varchar(30) default '
;
/*declare i tinyint;*/
(2) Processo
CRIAR PROCEDIMENTO `pro_addmm`(IN inpass varchar(10),OUT outpass varchar(11)) |
Os resultados da execução são os seguintes:
mysql> ligue pro_addmm('zhouys',@a); |
O algoritmo de criptografia tem vários pontos fracos:
1. Não suporta letras maiúsculas e minúsculas
2. Não suporta chinês
3. A força da criptografia não é suficiente
. Pessoas interessadas podem estudar como escrever a função de descriptografia, então ganhei. Não entre em detalhes aqui.