DELIMITER $$
CREATE DEFINER= 'sports'`@`'%'` PROCEDURE `CheckMembership`(IN BrandId int,
IN Email varchar(128),
IN PhoneNumber varchar(10),
OUT ResponseCode int,
OUT ResponseMessage varchar(256))
BEGIN
declare _count int;
select count(*) from Member where Phone1 = PhoneNumber into _count;
set ResponseCode = 1;
set ResponseMessage = '';
END
任何人都可以帮我解决这个存储过程,因为我是一个新手,并没有在互联网上找到任何好的解决方案。我需要做的就是通过在php
中运行来获取计数值答案 0 :(得分:0)
首先,SELECT
语句的语法错误,因为INTO
子句放错了位置。
这应该遵循SELECT
列表,并且位于FROM
关键字之前。例如:
SELECT COUNT(*) INTO _count
FROM Member
WHERE Phone1 = PhoneNumber ;
MySQL参考手册中提供了语法帮助:http://dev.mysql.com/doc/refman/5.5/en/select-into.html
我不确定这是否能回答你提出的问题。 (
问:我不知道如何在php文件中调用此存储过程来获取答案。
从PHP开始,我认为您需要为OUT参数使用MySQL用户定义的变量,并使用单独的SELECT
语句检索这些值:
作为您可以使用的模式的简单演示,给出问题所示过程的参数:
-- set user defined variables
SELECT @brandid = 'fee', @email = 'fi', @phonenumber = 'fo', @rc := '', @rm := '';
-- execute stored procedure with user-defined variables as arguments
CALL CheckMembership(@brandid, @email, @phonenumber, @rc, @rm);
-- retrieve user-defined variables
SELECT @rc AS ResponseCode, @rm AS ResponseMessage;
要返回“计数”值,您可以遵循相同的模式。修改过程以添加另一个OUT
参数,然后将其设置为过程中该参数的值。
(这似乎是一个不必要的困难,使用存储过程返回一个简单查询可以很容易返回的结果。)