[英]Selecting all values from a table in mysql using a stored procedure
我有一个名为Contacts的表,该表具有一个已连接至Java应用程序的person_id字段。
如果在应用程序中没有为person_id指定值,我想使用存储过程从通讯录中选择所有内容。
我要执行的操作是这样的:
Select * from Contacts where (person_id like "%")
为此,我编写了一个存储过程,如下所示:
Delimiter $$
CREATE DEFINER=`root`@`localhost` PROCEDURE `selectTest2`(In p_id int(11))
BEGIN
if p_id = null then
set p_id = "%";
end if;
select * from Contacts where (person_id like p_id);
END $$
Delimiter ;
但是,当我使用以下命令在sql中运行此过程时
call selectTest2(null)
返回的表为空。 如何使其显示表中的所有值?
参数p_id从应用程序的文本框中获取其值。 如果用户输入了ID,则我希望该过程仅显示该特定记录,否则我希望它显示所有记录。
我做错了什么,我该如何纠正? 我知道p_id是一个int,但是我尝试使用varchar类型的其他字段进行相同的操作,并且该表未能返回任何值。
尝试在以下类似的where子句中使用case语句
WHERE CASE WHEN p_id IS NOT NULL THEN person_id = p_id ELSE TRUE END
希望这可以解决您的问题
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.