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ó.