【问题标题】:I have problems with a stored procedure in mysql我在mysql中的存储过程有问题
【发布时间】:2023-03-10 03:26:01
【问题描述】:

我尝试了一切,但没有任何效果。我有这个存储过程:

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

不工作的条件;我该怎么办?

【问题讨论】:

  • 你需要告诉 mysql 哪个 numbre_u 是 sproc 参数,哪个是你表中的一个字段……否则它会被等同于 where true 执行。跨度>

标签: mysql stored-procedures


【解决方案1】:

您的查询,

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;

您的主要错误只是变量命名...

【讨论】:

    【解决方案2】:

    会有一个名称歧义你们对函数参数和列名使用相同的名称。而是使用一些其他相关名称,如下例所示:

    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

    【讨论】:

      猜你喜欢
      • 2015-06-03
      • 1970-01-01
      • 2020-03-09
      • 1970-01-01
      • 1970-01-01
      • 2018-09-20
      • 2022-01-24
      • 2014-08-17
      • 1970-01-01
      相关资源
      最近更新 更多