1. 程式人生 > 其它 >springsecurity oauth2_你確定懂OAuth 2.0的三方軟體和受保護資源服務?

springsecurity oauth2_你確定懂OAuth 2.0的三方軟體和受保護資源服務?

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)