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

时间:2022-02-10 22:51:24

I comment that I am a bit new to creating procedures in MYSQL 5.

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

Please support me in my case.

在我的情况下请支持我。

The error apparently generates me in the SELECT COUNT (*)

该错误显然在SELECT COUNT(*)中生成了我

MySQL code:

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;

Error SQL:

错误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 个解决方案

#1


0  

To pass a parameter to a procedure the word is IN not INT. Change this

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

CREATE PROCEDURE sp_est_ini_encuentro(INT cod_encuentro INTEGER)

For this

为了这

CREATE PROCEDURE sp_est_ini_encuentro(IN cod_encuentro INTEGER)

#1


0  

To pass a parameter to a procedure the word is IN not INT. Change this

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

CREATE PROCEDURE sp_est_ini_encuentro(INT cod_encuentro INTEGER)

For this

为了这

CREATE PROCEDURE sp_est_ini_encuentro(IN cod_encuentro INTEGER)