Originariamente inviato da luca200
Comunque mi pare che tu abbia una DECLARE un po' troppo in basso. Devono essere le prime istruzioni della s.p.
si è vero, quindi prova così:
codice:
DELIMITER $$
DROP PROCEDURE IF EXISTS mysql.prova $$
CREATE PROCEDURE mysql.prova()
BEGIN
DECLARE error BOOLEAN DEFAULT FALSE;
DECLARE CONTINUE HANDLER FOR SQLEXCEPTION SET error = TRUE;
SET AUTOCOMMIT = 0;
DROP DATABASE IF EXISTS dbprova;
CREATE DATABASE dbprova;
CREATE TABLE dbprova.table1 ( nome char(10), cognome char(10));
INSERT INTo dbprova.table1 SELECT * FROM dbold.pippo;
IF error THEN ROLLBACK;
ELSE COMMIT;
END IF;
END; $$
DELIMITER ;
dovrebbe funzionare, se non funziona così prova a scaricarti un programma di gestione database (tipo EMS SQL Manager 2005 for MySQL) e prova da li...perchè l'ho appena testata così e funziona.
Questo è il DDL funzionante che ottengo:
codice:
CREATE PROCEDURE `prova`()
NOT DETERMINISTIC
CONTAINS SQL
SQL SECURITY DEFINER
COMMENT ''
BEGIN
DECLARE error BOOLEAN DEFAULT FALSE;
DECLARE CONTINUE HANDLER FOR SQLEXCEPTION SET error = TRUE;
SET AUTOCOMMIT = 0;
DROP DATABASE IF EXISTS dbprova;
CREATE DATABASE dbprova;
CREATE TABLE dbprova.table1 ( nome char(10), cognome char(10));
INSERT INTo dbprova.table1 SELECT * FROM dbold.pippo;
IF error THEN ROLLBACK;
ELSE COMMIT;
END IF;
END;