Hola.
En un caso tan sencillo, yo no utilizaría ningún procedimiento almacenado, ejecutaría directamente la sentencia update :
Código:
update facturacion
set base_imponible = cloaca
where tipo_tarifa=:x_tipo_tarifa and tipo_factura=:x_tipo_factura and extract(month from fecha)=:x_mes and extract(year from fecha)=:x_year;
Aunque realmente empezaría con un :
Código:
update facturacion
set base_imponible = cloaca
Y si esta consulta funciona correctamente (no se me ocurre como podría no funcionar bien), empezaría a agregar cláusulas SQL, una a una, hasta encontrar la que ocasiona el problema.
Siguiente prueba :
Código:
update facturacion
set base_imponible = cloaca
where tipo_tarifa=:x_tipo_tarifa
Siguiente :
Código:
update facturacion
set base_imponible = cloaca
where tipo_tarifa=:x_tipo_tarifa and tipo_factura=:x_tipo_factura
etc. ...
NOTA: entre prueba y prueba, hazte una copia del archivo de datos, para no machacar facturas que no debiera.
Una vez sepamos cual es la cláusula que no hace lo que se espera de ella, debería ser muy fácil solucionarlo. Y es que como dice Casimiro, el problema tiene que estar en la cláusula WHERE y los parámetros que se le pasan.
Saludos.