1. Bloco de declaração, comentário e marca de comando final
Bloco de instruções
INÍCIO
Instrução SQL | Bloco de Instrução SQL
FIM
Descrição:
Block O bloco de instruções BEGIN ... END contém todas as operações de processamento do bloco de programa, permitindo que os blocos de instruções sejam aninhados.
② O uso dos blocos de instrução BEGIN ... END apenas no MySQL não faz sentido. Faz sentido encapsulá-los dentro de procedimentos armazenados, como procedimentos armazenados, funções armazenadas e gatilhos.
2. Notas
1) Comentário de linha única
Use o símbolo "##" como um comentário para uma instrução de linha única e escreva-a na linha ou no lado da instrução que precisa ser comentada .
[Exemplo 3-24] Exemplos.
## Pegue o máximo de dois números
SET @ x = 5, @ y = 6; ## Defina duas variáveis e atribua valores
SELECT SE (@x> @ y, @ x, @ y) valor máximo;
2) Comentários de várias linhas
Use / * e * / para incluir várias linhas de declarações de comentários.
3. Redefinir o marcador final do comando
Símbolo DELIMITER
【Descrição】
(1) O símbolo pode ser alguns símbolos especiais, como dois "#", dois "@", dois "$", dois "%" e assim por diante. Mas evite usar o caractere de barra invertida "/", porque é o caractere de escape do MySQL.
(2) Para continuar usando o ponto e vírgula como marcador final, execute o comando DELIMITER;
Segundo, a função de armazenamento
1. A criação de funções armazenadas:
Nome da função CREATE FUNCTION ([nome do parâmetro tipo de dados do parâmetro [,…]])
O tipo de dados do valor retornado pela função RETURNS
INÍCIO
Corpo da função ;
Declaração RETURN;
FIM
Nota: com delimitador para caracterizar o começo e o fim
2. Chame a função armazenada
SELECT nome da função ([valor do parâmetro [,…]])
DELIMITER @@
CREATE FUNCTION name_f1(dno DECIMAL(2))
RETURNS VARCHAR(14)
BEGIN
RETURN(SELECT dname FROM dept
WHERE deptno=dno);
END@@
DELIMITER;
SELECT name_f1(20);
3. Excluir função armazenada
DROP FUNCTION nome da função;
Nota: Não adicione parênteses após o nome da função.
Três, declaração de julgamento condicional
1. Uso de variáveis no programa
1) Declarar variáveis
DECLARAR nome da variável local [, nome da variável local, ...] tipo de dados [valor padrão padrão];
2) Atribuir valores a variáveis
SET nome da variável local = expressão 1
[, Nome da variável local = expressão 2, ...];
2) Instrução IF
1) Forme um
SE <条件> ENTÃO
Bloco de instruções SQL 1;
[OUTRO
Bloco 2 da instrução SQL;]
FIM SE;
Suplemento: Há um problema aqui: Esta função não possui DETERMINISTIC, NO SQL ou READS SQL DATA em seus
A solução para este erro ao criar uma função no MySQL: configure global log_bin_trust_function_creators = TRUE;
Exemplo: determinar se é um ano bissexto
DELIMITER @@
DROP FUNCTION IF EXISTS leap_year@@
CREATE FUNCTION leap_year(a int)
RETURNS VARCHAR(255)
BEGIN
IF((a%4=0 AND a%100<>0)OR a%400=0) THEN
RETURN '是闰年';
ELSE
RETURN '不是闰年';
END IF;
END@@
DELIMITER;
SELECT leap_year(2001);
2) Formulário 2
SE <条件 1> ENTÃO
Bloco de instruções SQL 1;
ELSEIF <条件 2> ENTÃO
Bloco 2 da instrução SQL;
……
OUTRO
Bloco de instruções SQL n;
FIM SE;
3) Instrução CASE
1) Forme um
CASE <expressão>
WHEN <expressão value 1> THEN instrução SQL bloco 1;
WHEN <expressão valor 2> THEN instrução SQL bloco 2;
……
WHEN <valor da expressão n> THEN SQL statement block n;
[Bloco de instruções SQL ELSE n + 1;]
FIM;
[Exemplo 3-32] Julgando o nome e o título dos 3 primeiros registros na tabela emp.
SELECT ename 姓名,CASE Job
WHEN '测试' THEN '工程师'
WHEN '设计' THEN '设计总监'
ELSE '经理'
END AS 职务
FROM emp LIMIT 3;
2) Formulário 2
CASO
WHEN <condição 1> THEN instrução SQL bloco 1;
WHEN <condição 2> THEN instrução SQL bloco 2;
……
WHEN <condição n> THEN SQL instrução bloco n;
Bloco de instruções SQL ELSE n + 1;
FIM;
[Exemplo 3-33] O julgamento exibe o nome ename, salário-base salarial e grade salarial dos três primeiros registros da tabela emp.
SELECT ename,sal,CASE
WHEN sal BETWEEN 700 AND 1200 THEN '一级'
WHEN sal BETWEEN 1201 AND 1400 THEN '二级'
WHEN sal BETWEEN 1401 AND 2000 THEN '三级'
WHEN sal BETWEEN 2001 AND 3000 THEN '四级'
ELSE '五级'
END 工资等级
FROM emp LIMIT 3;
Declaração de loop quatro
1 Ciclo de loop
Gravadora: LOOP
Bloco de instruções SQL;
IF <expressão condicional> THEN
Deixar a etiqueta;
FIM SE;
END LOOP;
[Exemplo 3-34] Exemplo de instrução de loop LOOP. Crie uma função de armazenamento sum_fn () que retorne a soma de 1 ~ n.
DELIMITER @@
DROP FUNCTION IF EXISTS sum_fn@@
CREATE FUNCTION sum_fn(n int)
RETURNS INT
BEGIN
DECLARE s,i INT;
SET s=0,i=1;
loop_label: LOOP
SET s=s+i;
SET i=i+1;
IF i>n THEN
LEAVE loop_label;
END IF;
END LOOP;
RETURN s;
END@@
DELIMITER ;
SELECT sum_fn(5);
2) ENQUANTO o ciclo
ENQUANTO <expressão condicional> FAZ
Bloco de instruções SQL;
FIM QUANDO;
[Exemplo 3-35] Exemplo de instrução de loop WHILE. Crie uma função de armazenamento sum_fn () que retorne a soma de 1 ~ n.
DELIMITER @@
DROP FUNCTION IF EXISTS sum_fn@@
CREATE FUNCTION sum_fn(n int)
RETURNS INT
BEGIN
DECLARE s,i INT;
SET s=0,i=1;
WHILE i<=n DO
SET s=s+i;
SET i=i+1;
END WHILE;
RETURN s;
END@@
DELIMITER ;
SELECT sum_fn(5);
3) Ciclo REPEAT
REPETIR
Bloco de instruções SQL;
UNTILE <expressão condicional>
REPETIÇÃO FINAL;
[Exemplo 3-36] Exemplo de instrução de loop REPEAT. Crie uma função de armazenamento sum_fn () que retorne a soma de 1 ~ n .
DELIMITER @@
DROP FUNCTION IF EXISTS sum_fn@@
CREATE FUNCTION sum_fn(n int)
RETURNS INT
BEGIN
DECLARE s,i INT;
SET s=0,i=1;
REPEAT
SET s=s+i;
SET i=i+1;
UNTIL i>n
END REPEAT;
RETURN s;
END@@
DELIMITER ;
SELECT sum_fn(5);