在MySQL 5中查询语法错误过程?

时间:2016-02-28 22:46:44

标签: mysql

我评论说我在MYSQL 5中创建程序有点新鲜。

请支持我。

错误显然是在 SELECT COUNT(*)

中生成的

MySQL代码:

DROP PROCEDURE IF EXISTS sp_est_ini_encuentro;

DELIMITER $$
CREATE PROCEDURE sp_est_ini_encuentro(IN cod_encuentro INTEGER)
    RETURNS VARCHAR
BEGIN

    DECLARE ind_pro_encuentro INTEGER;
    DECLARE est_ini_encuentro VARCHAR(80);

    SELECT COUNT(*) 
    INTO ind_pro_encuentro  
    FROM TABENCUENTRO enc
    WHERE SICODESTADO = 6 -- EN PROCESO
    AND DATE(TSFECCREACION) = DATE(NOW());

    IF ind_pro_encuentro = 0 THEN
        UPDATE TABDETENCUENTRO
        SET SICODESTADO = 6 -- EN PROCESO
        WHERE ICODENCUENTRO = cod_encuentro
        AND ICODPADDETENCUENTRO IS NULL
        AND ICODDETENCUENTRO IN (SELECT ICODDETENCUENTRO FROM (
                SELECT dtp.ICODDETENCUENTRO
                FROM TABDETENCUENTRO dtp
                WHERE dtp.ICODENCUENTRO = cod_encuentro
                AND dtp.ICODPADDETENCUENTRO IS NULL
                ORDER BY dtp.ICODDETENCUENTRO ASC LIMIT 1
            ) tmp
        );

        UPDATE TABENCUENTRO
        SET SICODESTADO = 6 -- EN PROCESO
        WHERE ICODENCUENTRO = cod_encuentro;    

        UPDATE TABENCUENTRO
        SET SICODESTADO = 9 -- PENDIENTE
        WHERE SICODESTADO = 1; -- ACTIVO
    ELSE
        SET est_ini_encuentro = 'El encuentro actual está en proceso.';
    END IF;

    RETURN est_ini_encuentro;               

END;
$$
DELIMITER;

错误SQL:

Query: CREATE PROCEDURE sp_est_ini_encuentro(IN cod_encuentro INTEGER) RETURNS VARCHAR BEGIN DECLARE ind_pro_encuentro INTEGER; DECLARE...

Error Code: 1064
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'VARCHAR
BEGIN

    DECLARE ind_pro_encuentro INTEGER;
    DECLARE est_ini_encuentr' at line 2

Execution Time : 0 sec
Transfer Time  : 0 sec
Total Time     : 0.001 sec

...................... ..............

1 个答案:

答案 0 :(得分:0)

要将参数传递给某个过程,该字词为IN而不是INT。改变这个

CREATE PROCEDURE sp_est_ini_encuentro(INT cod_encuentro INTEGER)

对于此

CREATE PROCEDURE sp_est_ini_encuentro(IN cod_encuentro INTEGER)