Saya ingin mencipta prosedur tersimpan dalam MySQL, tetapi saya mengalami ralat 1064:
错误代码:1064 您的SQL语法有误;请检查与您的MariaDB服务器版本相对应的手册,以获取正确的语法使用方法,位于第2行附近的 'ZID_TRANSAKSI VARCHAR(64), ZTGL1 DATE, ZTGL2 DATE ) BEGIN DECLARE ...' 查询:DELIMITER; 错误代码:1064 您的SQL语法有误;请检查与您的MariaDB服务器版本相对应的手册,以获取正确的语法使用方法,位于第1行附近的 'DELIMITER'
Ini adalah pertanyaan untuk prosedur tersimpan yang ingin saya buat:
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;
Mengapa pertanyaan saya muncul错误代码:1064
? Bagaimana saya boleh membetulkannya?
Saya menggunakan pangkalan data ORACLE sebelum ini, dan sekarang saya baru mula menggunakan MySQL. Jika terdapat sebarang perbezaan yang saya tidak sedar, sila beritahu saya.
DELIMITER
Hanya diperlukan jika anda membuat prosedur tersimpan dalam klien baris arahan, untuk membezakan antara pembatas biasa dan pembatas dalam blok BEGIN END.Dalam contoh anda, anda mentakrifkan pemisah
$$ CREATE PROCEDURE HITUNGMASUK
yang mungkin bukan yang anda mahukan sebenarnya.DELIMITER $$
Perlu dilaksanakan sebagai satu arahan, tidak disambungkan kepada definisi prosedur tersimpan.