Stored Procedures en MySQL

De sintaxis que me esta dando MySQL
CREATE PROCEDURE agregardatos
     (
        IN param1 VARCHAR(15),
        IN param2 VARCHAR(15),
        IN param3 VARCHAR(15),
        IN param4 VARCHAR(15),
        IN param5 VARCHAR(20),
        IN  param6                    INT(8)        ,
        IN  param7                    INT(8)        ,
        IN param8 TEXT
     )
Begin
    INSERT INTO ingresardatosVIEW
         (
           PrimerApellido,
           SegundoApellido,
           PrimerNombre,
           SegundoNombre,
           Correo,
           Celular,
           TelefonoCasa,
           Referencia
         )
    Values
         (
           Param1,
           Param2,
           Param3,
           Param4,
           Param5,
           Param6,
           Param7,
           Param8
         ) ;
END
GO
#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 '' at line 35

1 Respuesta

Respuesta
1
El que planteas es un problema muy extendido y ciertamente tiene una explicación muy sencilla.
Si no usas, por ejemplo, el MySQL Administrator para crear tus procedimientos, al hacerlo a mano e insertar un query de varias líneas, por defecto cuando MySQL encuentra el ; ejecuta hasta ese punto, produciéndose el error.
El secreto está en usar el comando DELIMITER para indicarle a MySQL que el símbolo ; no sea el que él interprete como FIN DE CONSULTA, sino otro que elijamos.
Así, y tal como documenta perfectamente el manual oficial de MySQL...
mysql> delimiter //
mysql> CREATE PROCEDURE simpleproc (OUT param1 INT)
-> BEGIN
-> SELECT COUNT(*) INTO param1 FROM t;
-> END
-> //
Query OK, 0 rows affected (0.00 sec)
mysql> delimiter ;
mysql> CALL simpleproc(@a);
Query OK, 0 rows affected (0.00 sec)
mysql> SELECT @a;
+------+
| @a |
+------+
| 3 |
+------+
1 row in set (0.00 sec)
... te permite incluir el símbolo ; sin que MySQL ejecute nada al encontrarlo, puesto que el ejemplo indica claramente que dicho DELIMITADOR ES //

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas