[英]MySql Error Code: 1064
我找不到錯誤。 你能幫助我嗎?
DELIMITER $$
CREATE PROCEDURE ReadBalance (IN mes INT,IN anio INT)
BEGIN
DECLARE rowid INT;
DECLARE entity INT;
DECLARE grupo VARCHAR(100);
DECLARE relacion INT;
DECLARE ini INT;
DECLARE fin INT;
DECLARE tipo INT;
DECLARE detalle INT;
DECLARE ctain INT;
DECLARE ctaen INT;
DECLARE debe DECIMAL(17,2);
DECLARE haber DECIMAL(17,2);
DECLARE saldo DECIMAL(17,2);
DECLARE done INT DEFAULT 0;
CREATE TEMPORARY TABLE Balance (
rowid INT NOT NULL
, entity TINYINT NOT NULL DEFAULT 0
, grupo VARCHAR(150) NOT NULL
, relacion INT UNSIGNED NOT NULL DEFAULT 0
, ini INT UNSIGNED NOT NULL DEFAULT 0
, fin INT UNSIGNED NOT NULL DEFAULT 0
, tipo INT UNSIGNED NOT NULL DEFAULT 1
, detalle INT UNSIGNED NOT NULL DEFAULT 0
, ctain INT UNSIGNED NOT NULL DEFAULT 0
, ctaen INT UNSIGNED NOT NULL DEFAULT 0
, debe DECIMAL(12,2) NOT NULL DEFAULT 0.00
, haber DECIMAL(12,2) NOT NULL DEFAULT 0.00
, saldo DECIMAL(12,2) NOT NULL DEFAULT 0.00
) ENGINE=MEMORY;
DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = 1;
DECLARE cur1 CURSOR FOR
SELECT
g.`rowid`,
g.`entity`,
g.`grupo`,
g.`fk_codagr_rel`,
g.`fk_codagr_ini`,
g.`fk_codagr_fin`,
g.`tipo_edo_financiero`,
g.`Detalle`,
ctai.`cta`,
ctae.`cta`
FROM
`llx_contab_grupos` g
INNER JOIN `llx_contab_cat_ctas` ctai
ON ctai.`rowid` = g.`fk_codagr_ini`
INNER JOIN llx_contab_cat_ctas ctae
ON ctae.`rowid` = g.`fk_codagr_fin` ;
OPEN cur1;
read_loop: LOOP
FETCH cur1 INTO rowid, entity, grupo,relacion, ini,fin,tipo,detalle,ctain,ctaen;
IF done =1THEN
LEAVE read_loop;
END IF;
SELECT debe := SUM(d.`debe`), haber:= SUM(d.`haber`) FROM `llx_contab_polizasdet` d
INNER JOIN llx_contab_polizas e ON e.`rowid` = d.`fk_poliza`
WHERE e.`anio` = anio
AND e.`mes` = mes
AND d.`cuenta` >= ctain
AND d.`cuenta` <= ctaen
;
saldo = debe-haber;
INSERT INTO Balance (
rowid,
entity,
grupo,
relacion,
ini,
fin,
tipo,
detalle,
ctain,
ctaen,
debe,
haber,
saldo
)
VALUES
(
rowid,
entity,
grupo,
relacion,
ini,
fin,
tipo,
detalle,
ctain,
ctaen,
debe,
haber,
saldo
) ;
END LOOP read_loop;
CLOSE cur1;
SELECT * FROM Balance;
END$$
DELIMITER ;
錯誤信息:
執行了1個查詢,0個成功,1個錯誤,0個警告
查詢:
CREATE PROCEDURE ReadBalance (IN mes INT,IN anio INT) BEGIN DECLARE rowid INT;
DECLARE entity INT;
DECLARE grupo VARCHAR(100); D...
錯誤代碼:1064您的SQL語法有錯誤; 檢查與您的MySQL服務器版本相對應的手冊,以便在'DECLARE CONTINUE HANDLER for NOT FOUND SET done = 1附近使用正確的語法;
DECLARE cur1 CURSOR FOR
SE' at line 32
Execution Time : 0 sec
Transfer Time : 0 sec
Total Time : 0 sec
我創造了這個,並且正常運作;
DELIMITER $$
USE `tindustrial`$$
DROP PROCEDURE IF EXISTS `Cur`$$
CREATE DEFINER = `root` @`localhost` PROCEDURE `Cur` ()
BEGIN
DECLARE rowid INT ;
DECLARE entity INT ;
DECLARE grupo VARCHAR (100) ;
DECLARE relacion INT ;
DECLARE ini INT ;
DECLARE fin INT ;
DECLARE tipo INT ;
DECLARE detalle INT ;
DECLARE ctain INT ;
DECLARE ctaen INT ;
DECLARE debe DECIMAL (17, 2) ;
DECLARE haber DECIMAL (17, 2) ;
DECLARE saldo DECIMAL (17, 2) ;
DECLARE no_more_rows BOOLEAN ;
DECLARE cur_B CURSOR FOR
SELECT
g.rowid,
g.entity,
g.grupo,
g.fk_codagr_rel,
g.fk_codagr_ini,
g.fk_codagr_fin,
g.tipo_edo_financiero,
g.Detalle,
ctai.cta,
ctae.cta
FROM
llx_contab_grupos g
INNER JOIN llx_contab_cat_ctas ctai
ON ctai.rowid = g.fk_codagr_ini
INNER JOIN llx_contab_cat_ctas ctae
ON ctae.rowid = g.fk_codagr_fin ;
DECLARE CONTINUE HANDLER FOR NOT FOUND SET no_more_rows = 1 ;
CREATE TEMPORARY TABLE Balance (
rowid INT NOT NULL,
entity TINYINT NOT NULL DEFAULT 0,
grupo VARCHAR (150) NOT NULL,
relacion INT UNSIGNED NOT NULL DEFAULT 0,
ini INT UNSIGNED NOT NULL DEFAULT 0,
fin INT UNSIGNED NOT NULL DEFAULT 0,
tipo INT UNSIGNED NOT NULL DEFAULT 1,
detalle INT UNSIGNED NOT NULL DEFAULT 0,
ctain INT UNSIGNED NOT NULL DEFAULT 0,
ctaen INT UNSIGNED NOT NULL DEFAULT 0,
debe DECIMAL (12, 2) NOT NULL DEFAULT 0.0,
haber DECIMAL (12, 2) NOT NULL DEFAULT 0.0,
saldo DECIMAL (12, 2) NOT NULL DEFAULT 0.0
) ENGINE=MEMORY;
OPEN cur_b ;
the_loop :
LOOP
FETCH cur_B INTO rowid,
entity,
grupo,
relacion,
ini,
fin,
tipo,
detalle,
ctain,
ctaen ;
IF no_more_rows
THEN CLOSE cur_b ;
LEAVE the_loop ;
END IF ;
END LOOP the_loop ;
CLOSE cur_b ;
TRUNCATE TABLE Balance ;
END $$
DELIMITER ;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.