繁体   English   中英

使用存储过程从mysql中的表中选择所有值

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM