【发布时间】:2016-11-09 05:17:40
【问题描述】:
我有一个名为 Contacts 的表,其中包含一个名为 person_id 的字段,我已连接到一个 java 应用程序。
如果应用程序中没有为 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 类型的其他字段尝试了同样的事情,并且该表未能返回任何值。
【问题讨论】:
标签: mysql database stored-procedures