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;