mysql - 如何使用存储过程、游标和 for 循环获取表值?
问题描述
我正在构建一个使用游标和循环的存储过程。我了解代码的工作原理,但在创建条件时遇到了麻烦。我不明白如何根据输入参数调用代码来检查某些单元格中的空值。
我的代码解释:我正在检查成员是否有任何过期书籍。在我称为“borrowedby”的表中,有变量“MemberID”、“ReturnDate”和“BookID”。ReturnDate 是图书归还的日期。输入参数“memberIDEN”必须等于“MemberID”并检查“ReturnDate”是否为空。如果它为空,那么我打印出 memberID 和过期的书籍。
如何创建一个条件来检查表“borrowedby”中的“ReturnDate”是否为空?
delimiter //
drop procedure if exists overdueBooks //
delimiter //
create procedure overdueBooks (in memberid INT)
begin
declare returnCheck date;
declare finished int default 0;
declare overdueList varchar (100) default "";
declare cursor_data cursor for
select MemberID
from borrowedby
where memberid = MemberID;
declare continue handler for not found set finished = 1;
open cursor_data;
get_members: loop
fetch cursor_data into overdueList;
if returnCheck is not null
then
leave get_members;
end if;
end loop get_members;
close cursor_data;
end
//
delimiter ;
解决方案
看来SP是多余的。
SELECT *
FROM borrowedby
WHERE @memberIDEN = MemberID
AND returnCheck IS NULL
此查询返回指定成员的所有未归还书籍。
推荐阅读
- javascript - Mocha 同步“首先”钩子超时
- excel - Excel - 需要多个公式才能使用工作表上的值在列表中查找这些值,然后创建一个范围并计算某些标准
- jquery - Drupal 8 在对话框关闭后做某事
- javascript - 如何用另一个对象的键更改对象的键
- html - ASP.NET Core 2.1 Partial helper Tag 在需要从数据库加载模型时产生问题
- java - 对并发和Java线程感到困惑
- jquery - 如何再次触发相同的选项?
- ruby-on-rails - Heroku 应用程序在部署后需要 3 到 4 分钟才能工作
- google-search-console - 为什么 Google Search Console 移动可用性报告中适合移动设备的页面数量少于编入索引的页面数量?
- c - PostgreSQL:在 PQexecPrepared() paramValues 参数中给出的类型与占位符和类型之间的关系