2017-08-22 134 views
0

我寫了一個存儲過程(MySQL),該存儲過程應該通過用戶的電子郵件返回所有用戶的數據。這裏是我的存儲過程:MySQL - 存儲過程返回意外值

-- Change Delimiter 
DELIMITER // 
-- Create Stored Procedure 
CREATE DEFINER=`username`@`localhost` PROCEDURE GetUserByEmail( 
    IN Email VARCHAR(255) 
) 
BEGIN 

SELECT * FROM user WHERE email = Email; 

END// 
-- Change Delimiter again 
DELIMITER ; 

然而,而不是返回的所有數據只能用於指定的電子郵件用戶,它返回的所有用戶表。而當我運行沒有存儲過程的相同查詢時,它僅返回具有指定電子郵件的用戶的數據。下面是該查詢:

SELECT * FROM user WHERE email = '[email protected]'; 

回答

1

That's因爲電子郵件it's八方通=到電子郵件(列名不區分大小寫),你應該改變它的東西是這樣的:

-- Change Delimiter 
DELIMITER // 
-- Create Stored Procedure 
CREATE DEFINER=`username`@`localhost` PROCEDURE GetUserByEmail( 
    IN My_email VARCHAR(255) 
) 
BEGIN 

SELECT * FROM user WHERE email = My_email; 

END// 
-- Change Delimiter again 
DELIMITER ;