springsecurity oauth2_你確定懂OAuth 2.0的三方軟體和受保護資源服務?
阿新 • • 發佈:2020-12-17
1、基本語法示例,區域性變數+使用者變數
1.1 基本語法
mysql> drop procedure if exists t1; Query OK, 0 rows affected (0.49 sec) mysql> delimiter // mysql> create procedure t1() -> begin -> declare mm int default 5; -> select mm; -> end // Query OK, 0 rows affected (0.12 sec) mysql> delimiter ; mysql> call t1(); +------+ | mm | +------+ | 5 | +------+ 1 row in set (0.00 sec) Query OK, 0 rows affected (0.01 sec)
1.2 區域性變數+使用者變數
mysql> set @mm=3; Query OK, 0 rows affected (0.00 sec) mysql> drop procedure if exists t1; Query OK, 0 rows affected (0.39 sec) mysql> delimiter // mysql> create procedure t1() -> begin -> declare mm int; -> select @mm; -> set mm=5; -> select mm; -> end // Query OK, 0 rows affected (0.07 sec) mysql> delimiter ; mysql> call t1(); +------+ | @mm | +------+ | 3 | +------+ 1 row in set (0.00 sec) +------+ | mm | +------+ | 5 | +------+ 1 row in set (0.01 sec) Query OK, 0 rows affected (0.01 sec) # 注:{set @mm=3}為使用者變數,使用者範圍內生效;{declare mm int; set mm=10}為區域性變數,僅在儲存過程內生效
2、流程控制語句
2.1 if條件判斷
- 語法:
if 條件 then
SQL語句;
elseif 條件 then
SQL語句;
else SQL語句;
end if;
- 需求:建立儲存過程。插入的score:
- 大於等於80分,level為優秀;
- 大於等於60分,level為及格;
- 小於60分,level為不及格;
- 小於0或大於100,輸出“請輸入正確的分數”
mysql> desc mm2; +-------+-------------------------------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +-------+-------------------------------------+------+-----+---------+-------+ | name | varchar(10) | YES | | NULL | | | score | int | YES | | NULL | | | level | enum('優秀','及格','不及格') | YES | | NULL | | +-------+-------------------------------------+------+-----+---------+-------+ 3 rows in set (0.00 sec) mysql> drop procedure if exists t1; Query OK, 0 rows affected (0.53 sec) mysql> delimiter // mysql> create procedure t1(name varchar(10),sc int) -> begin -> if sc>100 or sc<0 then -> select '請輸入正確的分數'; -> elseif sc>=80 then -> insert into mm2 values (name,sc,'優秀'); -> elseif sc>=60 then -> insert into mm2 values (name,sc,'及格'); -> else -> insert into mm2 values (name,sc,'不及格'); -> end if; -> end // Query OK, 0 rows affected (0.08 sec) mysql> delimiter ; mysql> call t1('張三','85'); Query OK, 1 row affected, 1 warning (0.11 sec) mysql> call t1('李四','77'); Query OK, 1 row affected (0.08 sec) mysql> call t1('王五','52'); Query OK, 1 row affected (0.40 sec) mysql> call t1('孫悟空','220'); +--------------------------+ | 請輸入正確的分數 | +--------------------------+ | 請輸入正確的分數 | +--------------------------+ 1 row in set (0.00 sec) Query OK, 0 rows affected (0.01 sec) mysql> call t1('豬八戒','-22'); +--------------------------+ | 請輸入正確的分數 | +--------------------------+ | 請輸入正確的分數 | +--------------------------+ 1 row in set (0.00 sec) Query OK, 0 rows affected (0.01 sec) mysql> select * from mm2; +--------+-------+-----------+ | name | score | level | +--------+-------+-----------+ | 張三 | 85 | 優秀 | | 李四 | 77 | 及格 | | 王五 | 52 | 不及格 | +--------+-------+-----------+ 3 rows in set (0.00 sec)
2.2 case條件判斷
- 語法1:
case 變數
when 值1 then
SQL語句;
when 值2 then
SQL語句;
else
SQL語句;
end case;
- 語法2:
case
when 條件1 then
SQL語句;
when 條件2 then
SQL語句;
···
end case;
- 需求1:同2.1需求
mysql> drop procedure if exists t1;
Query OK, 0 rows affected, 1 warning (0.33 sec)
mysql> delimiter //
mysql> create procedure t1(name varchar(10),sc int)
-> begin
-> case
-> when sc>100 or sc<0 then
-> select '請輸入正確的分數';
-> when sc>=80 then
-> insert into mm2 values (name,sc,'優秀');
-> when sc>=60 then
-> insert into mm2 values (name,sc,'及格');
-> else
-> insert into mm2 values (name,sc,'不及格');
-> end case;
-> end //
Query OK, 0 rows affected (0.10 sec)
mysql> delimiter ;
mysql> call t1('楊過','15');
Query OK, 1 row affected, 1 warning (0.39 sec)
mysql> call t1('梅超風','75');
Query OK, 1 row affected (0.12 sec)
mysql> call t1('郭靖','99');
Query OK, 1 row affected (0.07 sec)
mysql> call t1('小李','103');
+--------------------------+
| 請輸入正確的分數 |
+--------------------------+
| 請輸入正確的分數 |
+--------------------------+
1 row in set (0.00 sec)
Query OK, 0 rows affected (0.01 sec)
mysql> call t1('天天','-1');
+--------------------------+
| 請輸入正確的分數 |
+--------------------------+
| 請輸入正確的分數 |
+--------------------------+
1 row in set (0.00 sec)
Query OK, 0 rows affected (0.01 sec)
mysql> select * from mm2;
+-----------+-------+-----------+
| name | score | level |
+-----------+-------+-----------+
| 楊過 | 15 | 不及格 |
| 梅超風 | 75 | 及格 |
| 郭靖 | 99 | 優秀 |
+-----------+-------+-----------+
3 rows in set (0.00 sec)
- 需求2:建立儲存過程。插入score:
- 值為0,level為退學;
- 值為99,level為很棒;
- 值為100,level為最棒。
mysql> drop procedure if exists t1;
Query OK, 0 rows affected (0.52 sec)
mysql> delimiter //
mysql> create procedure t1(name varchar(10),sc int)
-> begin
-> case sc
-> when '0' then
-> insert into mm2 values (name,sc,'退學');
-> when '99' then
-> insert into mm2 values (name,sc,'很棒');
-> when '100' then
-> insert into mm2 values (name,sc,'最棒');
-> end case;
-> end //
Query OK, 0 rows affected (0.15 sec)
mysql> delimiter ;
mysql> call t1('大蛇丸','0');
Query OK, 1 row affected, 1 warning (0.09 sec)
mysql> call t1('自來也','99');
Query OK, 1 row affected (0.42 sec)
mysql> call t1('綱手','100');
Query OK, 1 row affected (0.09 sec)
mysql> call t1('小櫻','80');
ERROR 1339 (20000): Case not found for CASE statement
mysql> select * from mm2;
+-----------+-------+-----------+
| name | score | level |
+-----------+-------+-----------+
| 大蛇丸 | 0 | 退學 |
| 自來也 | 99 | 很棒 |
| 綱手 | 100 | 最棒 |
+-----------+-------+-----------+
6 rows in set (0.00 sec)
2.3 while迴圈
- 語法:
while 條件 do
SQL語句;
end while;
- 需求:向mm1表插入1-10
mysql> drop procedure if exists t1;
Query OK, 0 rows affected (0.12 sec)
mysql> delimiter //
mysql> create procedure t1()
-> begin
-> declare i int default 1;
-> while i<=10 do
-> insert into mm1 values (i);
-> set i=i+1;
-> end while;
-> end //
Query OK, 0 rows affected (0.09 sec)
mysql> delimiter ;
mysql> call t1();
Query OK, 1 row affected (0.90 sec)
mysql> select * from mm1;
+------+
| id |
+------+
| 1 |
| 2 |
| 3 |
| 4 |
| 5 |
| 6 |
| 7 |
| 8 |
| 9 |
| 10 |
+------+
10 rows in set (0.00 sec)
2.4 repeat迴圈
- 語法:
repeat
SQL語句;
until 條件
end repeat;
- 需求:同2.3
mysql> drop procedure if exists t1;
Query OK, 0 rows affected (0.15 sec)
mysql> delimiter //
mysql> create procedure t1()
-> begin
-> declare i int default 1;
-> repeat
-> insert into mm1 values (i);
-> set i=i+1;
-> until i>10
-> end repeat;
-> end //
Query OK, 0 rows affected (0.22 sec)
mysql> delimiter ;
mysql> call t1();
Query OK, 1 row affected (0.62 sec)
mysql> select * from mm1;
+------+
| id |
+------+
| 1 |
| 2 |
| 3 |
| 4 |
| 5 |
| 6 |
| 7 |
| 8 |
| 9 |
| 10 |
+------+
10 rows in set (0.00 sec)
2.5 loop迴圈
- 語法:
loop
標籤名: loop
SQL語句;
if 條件 then
leave 標籤名;
end if;
end loop 標籤名;
# 注:loop迴圈無法跳出迴圈,需藉助{if…then…leave}跳出
- 需求:同2.3
mysql> drop procedure if exists t1;
Query OK, 0 rows affected, 1 warning (0.06 sec)
mysql> delimiter //
mysql> create procedure t1()
-> begin
-> declare i int default 1;
-> bbc: loop
-> insert into mm1 values (i);
-> set i=i+1;
-> if i>10 then
-> leave bbc;
-> end if;
-> end loop bbc;
-> end //
Query OK, 0 rows affected (0.07 sec)
mysql> delimiter ;
mysql> call t1();
Query OK, 1 row affected (0.68 sec)
mysql> select * from mm1;
+------+
| id |
+------+
| 1 |
| 2 |
| 3 |
| 4 |
| 5 |
| 6 |
| 7 |
| 8 |
| 9 |
| 10 |
+------+
10 rows in set (0.00 sec)