mysql - 在 MySQL 中的存储过程中使用变量

标签 mysql sql

我正在尝试使这个存储过程正常工作;我正在尝试接收一个参数并使用该参数在“participantes”表中查找一行,计算结果以验证该 id 是否存在于表中。不知何故,当我尝试保存过程时,它失败了,说“你的 SQL 语法有错误;检查与你的 MySQL 服务器版本相对应的手册,了解在第 16 行的‘END’附近使用的正确语法”。我们将不胜感激。

BEGIN
DECLARE cuentaAtleta INT;

SELECT COUNT(*)
INTO cuentaAtleta 
FROM participantes
WHERE id_participante =  id; /* id is a parameter */

IF cuentaAtleta > 0 THEN
    SELECT *
    FROM participantes
    INNER JOIN disciplinas ON participantes.id_disciplina = disciplinas.id_disciplina
    WHERE id_participante =  'id;

END IF
END

它在 Linux 服务器上
MySQL版本:5.1.68-cll
PHP版本:5.3.16

最佳答案

因为您没有终止语句并且您没有更改分隔符。

DELIMITER $$
CREATE PROCEDURE procNameHERE(IN ID INT)
BEGIN

    DECLARE cuentaAtleta INT;

    SELECT  COUNT(*)
    INTO    cuentaAtleta 
    FROM    participantes
    WHERE   id_participante =  id;

    IF cuentaAtleta > 0 THEN
        SELECT  *
        FROM    participantes
                INNER JOIN disciplinas 
                    ON participantes.id_disciplina = disciplinas.id_disciplina
        WHERE   id_participante =  id;
    END IF ;

END $$
DELIMITER ;

关于mysql - 在 MySQL 中的存储过程中使用变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15152544/

相关文章:

php - 用户认证和权限表结构

php - 在 MySql 表中存储聊天消息

php - 如何防止 LAMP 应用程序中的 SQL 注入(inject)?

c# - 在没有 SQL Server 的情况下创建 C# 应用程序

mysql - 选择具有时间差的行和具有默认值的缺失行

sql - MySQL "in clause"内的项目数

php - 24小时值(value)

mysql - 仅执行今天尚未运行的 MySQL 存储过程

mysql - 选择 WHERE 子句,拆分列值并检查

Mysql COUNT 和 IF 用法