Mysql存储过程

时间:2014-08-11 17:38:18

标签: php mysql stored-procedures

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

中运行来获取计数值

1 个答案:

答案 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参数,然后将其设置为过程中该参数的值。

(这似乎是一个不必要的困难,使用存储过程返回一个简单查询可以很容易返回的结果。)