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