[MySQL光速入門]025 函式作業答案

貓哥的技術部落格發表於2019-04-17
  1. 建立一個累加的函式, 兩個引數, 從第一個引數累加到第二個引數
mysql> select accumulation(1,100);
+---------------------+
| accumulation(1,100) |
+---------------------+
|                5050 |
+---------------------+
1 row in set (0.02 sec)

mysql> 
複製程式碼

答案:

drop function if exists accumulation;
create function accumulation(start_num int, end_num int) returns int begin 
    declare result int default 0;
    while 
        start_num <= end_num
    do
        set result = result + start_num;
        set start_num = start_num + 1;
    end while;
    return result;
end;
select accumulation(1,100);
複製程式碼

中文版

drop function if exists 累加;
create function 累加(開始數字 int, 結束數字 int) returns int begin 
    declare 最終結果 int default 0;
    while 
        開始數字 <= 結束數字
    do
        set 最終結果 = 最終結果 + 開始數字;
        set 開始數字 = 開始數字 + 1;
    end while;
    return 最終結果;
end;
select 累加(1,100);
複製程式碼
  1. 建立一個函式叫動物園, 每次呼叫, 隨機返回不同的動物
mysql> select zoo();
+--------+
| zoo()  |
+--------+
| 眼鏡蛇 |
+--------+
1 row in set (0.03 sec)

mysql> select zoo();
+--------+
| zoo()  |
+--------+
| 白頭鷹 |
+--------+
1 row in set (0.04 sec)

mysql> select zoo();
+-------+
| zoo() |
+-------+
| 河馬  |
+-------+
1 row in set (0.06 sec)

mysql> select zoo();
+-------+
| zoo() |
+-------+
| 隼    |
+-------+
1 row in set (0.07 sec)

mysql> select zoo();
+--------+
| zoo()  |
+--------+
| 白頭鷹 |
+--------+
1 row in set (0.09 sec)

mysql> select zoo();
+-------+
| zoo() |
+-------+
| 猩猩  |
+-------+
1 row in set (0.10 sec)

mysql> select zoo();
+-------+
| zoo() |
+-------+
| 鬣狗  |
+-------+
1 row in set (0.11 sec)

mysql> 
複製程式碼

答案:

drop function if exists zoo;
create function zoo() returns char(20) begin 
    declare result char(20);
    declare animals_id int;
    set animals_id = floor(rand()*20) + 1;
    select name into result from animals where id = animals_id;
    return result;
end;
select zoo();
複製程式碼

中文版

drop function if exists 逛動物園;
create function 逛動物園() returns char(20) begin 
    declare 結果 char(20);
    declare 動物ID int;
    set 動物ID = floor(rand()*20) + 1;
    select 動物名稱 into 結果 from 動物表 where id = 動物ID;
    return 結果;
end;
select 逛動物園();
複製程式碼

快速跳轉

相關文章