Debería funcionar si usa un Statement
en lugar de un CallableStatement
.
Deberías usar Statement para todos los DDL, PreparedStatement para DML y CallableStatement para llamadas de procedimiento. Crear un procedimiento es DDL.
Una CallableStatement intentará detectar y enlazar variables identificadas por dos puntos : así que esta es probablemente la razón por la que su código no funcionó.