Beim Erstellen der gespeicherten MySQL-Prozedur ist Fehler 1064 aufgetreten
P粉041881924
P粉041881924 2023-09-12 15:41:52
0
1
544

Ich möchte eine gespeicherte Prozedur in MySQL erstellen, bin aber auf den Fehler 1064 gestoßen:

错误代码:1064 您的SQL语法有误;请检查与您的MariaDB服务器版本相对应的手册,以获取正确的语法使用方法,位于第2行附近的 'ZID_TRANSAKSI VARCHAR(64), ZTGL1 DATE, ZTGL2 DATE ) BEGIN DECLARE ...' 查询:DELIMITER; 错误代码:1064 您的SQL语法有误;请检查与您的MariaDB服务器版本相对应的手册,以获取正确的语法使用方法,位于第1行附近的 'DELIMITER'

Dies ist die Abfrage für die gespeicherte Prozedur, die ich erstellen möchte:

DELIMITER $$ CREATE PROCEDURE HITUNGMASUK ( ZID_TRANSAKSI VARCHAR(64), ZTGL1 DATE, ZTGL2 DATE ) BEGIN DECLARE done INT DEFAULT FALSE; DECLARE PTAHUN VARCHAR(4); DECLARE PBULAN VARCHAR(2); DECLARE PHITUNG INTEGER DEFAULT 0; DECLARE CEKKARTUSTOK INTEGER DEFAULT 0; DECLARE PID_BARANG VARCHAR(255) DEFAULT 'X'; DECLARE PPANJANG INTEGER DEFAULT 0; DECLARE CEKKARTUSTOK CURSOR FOR SELECT B.id_barang, SUM(B.total_Panjang) AS PANJANG FROM transaksi_gudang A, line_item_barang B WHERE A.ID_Transaksi LIKE ZID_TRANSAKSI AND A.Tanggal BETWEEN ZTGL1 AND ZTGL2 AND B.ID_GR = A.ID_Transaksi GROUP BY B.id_barang; DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE; PTAHUN = YEAR(ZTGL1); PBULAN = MONTH(ZTGL1); OPEN CEKKARTUSTOK; teams_loop: LOOP FETCH CEKKARTUSTOK INTO PID_BARANG,PPANJANG; IF PID_BARANG = 'X' THEN INSERT INTO kartustok(TAHUN,BULAN,ID_BARANG,KODE_GUDANG,MASUK) VALUES (); END IF; IF done THEN LEAVE teams_loop; END IF; END LOOP; CLOSE CEKKARTUSTOK; SELECT FROM kartustok C WHERE C.TAHUN = PTAHUN AND C.BULAN = PBULAN AND C.ID_BARANG = P END $$ DELIMITER;

Warum erscheint meine Anfrage错误代码:1064? Wie kann ich es reparieren?

Ich habe vorher die ORACLE-Datenbank verwendet und jetzt habe ich gerade angefangen, MySQL zu verwenden. Wenn es Unterschiede gibt, die mir nicht bekannt sind, lassen Sie es mich bitte wissen.

P粉041881924
P粉041881924

Antworte allen (1)
P粉883223328

DELIMITER只在您在命令行客户端内创建存储过程时需要,以区分常规分隔符和BEGIN END块内的分隔符。

在您的示例中,您定义了一个分隔符$$ CREATE PROCEDURE HITUNGMASUK,这可能不是您真正想要的。

DELIMITER $$需要作为单个命令执行,而不是与存储过程定义连接。

DELIMITER $$ CREATE PROCEDURE() BEGIN ... END $$
    Neueste Downloads
    Mehr>
    Web-Effekte
    Quellcode der Website
    Website-Materialien
    Frontend-Vorlage
    Über uns Haftungsausschluss Sitemap
    Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!