Si te falla la sentencia
Código SQL
[-]provincia = cast( substring(codigo_postal FROM 1 FOR 2) as integer);
es porque en las posiciones que extraes en alguno de los registros no hay números.
Ejecuta la consulta y revisa el resultado porque el problema lo tienes ahí.
Código SQL
[-]select empresa,cod_postal,codigo_cliente,num_direccion from cli_direcciones
Un saludo