Hay dos problemas: a la sentencia INSERT le falta el INTO:
Código sql:
Ver originalDELIMITER $$
INSERT INTO datos_usuarios VALUES(nombre_usuario);
Y además, el problema es que los scripts de SP o de SF, cuando usan las cláusulas BEGIN/END,
deben forzosamente desactivar los delimitadores de sentencias, que en este caso es el punto y coma. Esto se debe a que un SP debe ser ingresado
como un sólo bloque desde la primera línea hasta la última, y si MySQL encuentra un terminador de sentencia antes del final, intenta compilarlo, dando un error.
Entonces, la solución es ponerle al script una sentencia especial que sólo se usa para esto:
DELIMITER. Esta cambia el delimitador de sentencia por otro caracter o conjunto de caracteres. Es conveniente usar conjuntos y no caracteres simples, para que no se generen errores accidentales. En ese caso, lo que se suele usar es un doble signo "$":
Código sql:
Ver originalDELIMITER $$
CREATE PROCEDURE nuevo (nombre_usuario INT)
BEGIN
INSERT INTO datos_usuarios VALUES(nombre_usuario);
END$$
DELIMITER ;
Cuando termina el script debe volverse a poner el delimitador por default o de lo contrario permanecerá el mismo $$.
Un tip final:
Esto solamente funciona al ejecutar scripts o al trabajar con MySQL en modo consola.
Si lo haces desde programación de una aplicación, el DELIMITER no se usa.