为什么此存储过程会为第二个选择返回不正确的结果?

时间:2015-03-11 18:50:38

标签: mysql

当我执行下面的MySql存储过程时,第一个选择的结果数是正确的,但它似乎忽略了第二个选择的参数,因为它返回所有记录。对于第一个选择,它返回1个联系人,但对于第二个选择,它将返回所有联系人的所有地址。

CREATE DEFINER = 'dbadmin'@'%'
PROCEDURE ContactsDB.GetContact(IN contactId INT)
BEGIN
SELECT Id,
       FirstName,
       LastName,
       Company,
       Title,
       Email
FROM Contacts
WHERE Id = contactId;

SELECT Id,
       ContactId,
       AddressType,
       StreetAddress,
       City,
       StateId,
       PostalCode
FROM Addresses
WHERE ContactId = contactId;
END

1 个答案:

答案 0 :(得分:1)

你没有说你正在使用的是什么版本的MySQL,但如果它是5或更高版本,它可能是区分大小写的事情。您的参数名称与列名称匹配,第二个查询可能只是将列与自身进行比较并返回所有行。