[英]Can't Create Procedure Mysql
I've already confused so that, I am asking here, about how to create a stored procedure in mysql with below code : 我已经很困惑了,所以我在这里问如何使用以下代码在mysql中创建存储过程:
DELIMITER $$
CREATE PROCEDURE hitung_nilai_stok(sisa INT)
BEGIN
DECLARE done INT DEFAULT FALSE;
DECLARE jumlah DECIMAL;
DECLARE harga INT;
DECLARE nilai_stok INT DEFAULT 0;
DECLARE selisih DECIMAL DEFAULT 0.000;
DECLARE data_stok CURSOR FOR SELECT
Stok.masuk,
Stok.harga_masuk
FROM stoks Stok
WHERE Stok.barang_id = 1
AND Stok.tanggal <= '2013-11-19';
DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE;
TRUNCATE TABLE transaksi;
SET selisih = sisa;
OPEN data_stok;
loop_data: LOOP
FETCH data_stok INTO jumlah, harga;
SET selisih = selisih - jumlah;
IF done THEN
LEAVE loop_data;
END IF;
IF (selisih = 0.000) THEN
INSERT INTO transaksi VALUES (jumlah,harga);
ELSE IF (selisih > 0.000) THEN
SET selisih = selisih;
INSERT INTO transaksi VALUES (jumlah,harga);
ELSE IF (selisih < 0.000) THEN
INSERT INTO transaksi VALUES (selisih,harga);
SET done = TRUE;
END IF;
END LOOP loop_data;
CLOSE data_stok;
SELECT SUM(jumlah*harga) FROM transaksi;
END$$
DELIMITER ;
The error I got is : 我得到的错误是:
#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 'LOOP loop_data; CLOSE data_stok; SELECT SUM(jumlah*harga) INTO nilai_stok FR' at line 49
Well, when I removed these lines : 好吧,当我删除这些行时:
ELSE IF (selisih > 0.000) THEN
SET selisih = selisih;
INSERT INTO transaksi VALUES (jumlah,harga);
ELSE IF (selisih < 0.000) THEN
INSERT INTO transaksi VALUES (selisih,harga);
SET done = TRUE;
It executed successfully. 它执行成功。 So, what is it that made the error occured?
那么,是什么导致了错误发生? Can somebody gimme some clues?
有人可以给我一些线索吗?
Your ELSE IF
is wrong, it should be ELSEIF
together 您的
ELSE IF
错误,应该一起使用ELSEIF
Try this 尝试这个
IF (selisih = 0.000) THEN
INSERT INTO transaksi VALUES (jumlah,harga);
ELSEIF (selisih > 0.000) THEN
SET selisih = selisih;
INSERT INTO transaksi VALUES (jumlah,harga);
ELSEIF (selisih < 0.000) THEN
INSERT INTO transaksi VALUES (selisih,harga);
SET done = TRUE;
END IF;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.