Sakila 数据库中的存储过程
本文整理了 Sakila 数据库中定义的 3 个存储过程及每个存储过程的用法。
Sakila 数据库中共定义了 3 个存储过程。
film_in_stock
film_in_stock
存储过程确定一个给定的影片在给定的商店是否有库存。
参数
p_film_id
- 要检查的影片的 ID,来自
film
表的film_id
字段。 p_store_id
- 要检查的商店的 ID,来自
store
表的store_id
字段。 p_film_count
OUT
返回库存影片拷贝数的参数。
返回值
此过程生成库存影片副本的库存 ID 编号表,并返回(在 p_film_count
参数中)指示该表中的行数。
示例用法
CALL film_in_stock(1,1,@count);
+--------------+
| inventory_id |
+--------------+
| 1 |
| 2 |
| 3 |
| 4 |
+--------------+
4 rows in set (0.01 sec)
Query OK, 1 row affected (0.01 sec)
SELECT @count;
+--------+
| @count |
+--------+
| 4 |
+--------+
1 row in set (0.00 sec)
film_not_in_stock
film_not_in_stock
存储过程确定在给定的商店里一个给定的影片的任何拷贝是否没有库存(租出去)。
参数
p_film_id
- 要检查的影片的 ID,来自
film
表的film_id
字段。 p_store_id
- 要检查的商店的 ID,来自
store
表的store_id
字段。 p_film_count
- 一个
OUT
参数,返回没有库存的影片拷贝数。
返回值
此过程为没有库存的影片副本生成一个库存 ID 列表,并返回(在 p_film_count
参数中)指示该表中的行数。
示例用法
CALL film_not_in_stock(2, 2, @count);
```output` +————–+ | inventory_id | +————–+ | 9 | +————–+ 1 row in set (0.01 sec)
Query OK, 1 row affected (0.01 sec)
mysql> SELECT @count;
+--------+
| @count |
+--------+
| 1 |
+--------+
1 row in set (0.00 sec)
rewards_report
rewards_report
存储过程会生成一个由参数指定的上个月的优质客户的列表。
参数
min_monthly_purchases
- 客户在上个月需要进行的最低购买或租赁次数才能获得资格。
min_dollar_amount_purchased
- 客户在上个月需要花费的最低金额才能获得资格。
count_rewardees
OUT
返回满足指定资格的客户计数的参数。
返回值
此过程会生成符合指定资格的客户表。该表的结构与 customer
表相同。该过程还返回(在 count_rewardees
参数中)该表中的行数。
示例用法
CALL rewards_report(7, 20.00, @count);
...
| 598 | 1 | WADE | DELVALLE | [email protected] | 604 | 1 | 2006-02-24 10:48:30 | 2006-02-15 04:57:20 |
| 599 | 2 | AUSTIN | CINTRON | [email protected] | 605 | 1 | 2006-02-24 10:48:30 | 2006-02-15 04:57:20 |
...
42 rows in set (0.11 sec)
Query OK, 0 rows affected (0.67 sec)
SELECT @count;
+--------+
| @count |
+--------+
| 42 |
+--------+
1 row in set (0.00 sec)