1
我已经PERSON_ID一个调用一个称为字段Contacts表,我已连接到一个Java应用程序中选择的所有值从表中的MySQL。使用存储过程
如果应用程序为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的其他字段相同的事情和表未能返回任何值。
谢谢这个工作。不过,我仍然有兴趣知道我的代码为什么不起作用。你有什么想法为什么我的代码返回一个空表? – Ar254
在你的代码中,尝试改变'if p_id = null then'为'如果p_id为null then',并让我知道如果这不起作用。 – Viki888
它不适用于p_id,因为它是一个int,但它适用于varchar类型的其他字段。谢谢您的回答。 – Ar254