我评论说我在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
...................... ..............
答案 0 :(得分:0)
要将参数传递给某个过程,该字词为IN
而不是INT
。改变这个
CREATE PROCEDURE sp_est_ini_encuentro(INT cod_encuentro INTEGER)
对于此
CREATE PROCEDURE sp_est_ini_encuentro(IN cod_encuentro INTEGER)