2015-04-24 42 views
0

与存储过程的问题我都试过了,但没有什么工作,我有这个存储过程:我已经在MySQL

DROP PROCEDURE IF EXISTS socios; 
CREATE PROCEDURE socios(in nombre_u varchar(25), out socios INT) 
BEGIN 
SELECT count(*) into socios FROM socio where NOMBRE_U=nombre_u; 
END 

在不工作条件....我能做些什么?

+0

你需要告诉mysql哪些numbre_u是sproc参数,哪一个是你的表中的一个字段......否则它就会被执行为相当于'真正的'。 –

回答

0

将会有一个名称歧义您使用相同的名称作为函数参数和列名称。相反,用一些其他相关的名称作为显示在下面的例子:

DROP PROCEDURE IF EXISTS socios; 
CREATE PROCEDURE socios(in _nombre_u varchar(25), out socios INT) 
BEGIN 
    SELECT count(*) into socios FROM socio where NOMBRE_U = _nombre_u; 
END; 

在一个类似的答案:
https://stackoverflow.com/a/23867775/767881

0

查询,

DROP PROCEDURE IF EXISTS socios; 
CREATE PROCEDURE socios (in nombre_u varchar(25), out socios INT) 
    BEGIN SELECT count(*) into socios FROM socio where NOMBRE_U=nombre_u; 
END; 

应改为:

DROP PROCEDURE IF EXISTS socios; 
CREATE PROCEDURE socios (in pnombre varchar(25), out psocios INT) 
    BEGIN SELECT count(*) into psocios FROM socio where NOMBRE_U=pnombre; 
END; 

你r主要错误只是变量命名...