简体   繁体   English

无法创建过程Mysql

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM