Запрос всех данных, когда год равен 18:
SELECT * from tb where year=18 //
+----+------+------+------+
| id | name | year | num |
+----+------+------+------+
| 2 | a | 18 | 400 |
| 4 | b | 18 | 200 |
| 6 | c | 18 | 100 |
+----+------+------+------+
Теперь я написал процедуру mysql:
create procedure show_data(in type char,myear int)
begin
if type = "all" then
SELECT * from tb where year=myear;
elseif type != "all" then
SELECT * from tb where name=type and year=myear;
end if;
end //
Логика в процедуре show_data
ясна: когда входной аргументtype
это все, а мой 18
, запрос просто SELECT * from tb where year=18
в соответствии с процедурой.
То, что я получил с call show_data("all",18)
, выглядит следующим образом:
call show_data("all",18)//
+----+------+------+------+
| id | name | year | num |
+----+------+------+------+
| 2 | a | 18 | 400 |
+----+------+------+------+
1 row in set (0.00 sec)
Query OK, 0 rows affected, 1 warning (0.00 sec)
show warnings//
+---------+------+-------------------------------------------+
| Level | Code | Message |
+---------+------+-------------------------------------------+
| Warning | 1265 | Data truncated for column 'type' at row 1 |
+---------+------+-------------------------------------------+
1 row in set (0.00 sec)