El error indica que no coinciden los tipos, asi que alguna de las variables de la matriz que almacenas en memoria la estas intentando escribir en una tabla de la base de datos en un campo de un tipo que no concuerda (campo numerico y metemos texto) o viceversa.
Otra cosa, ¿porque cargas esa matriz en memoria con varables de sesion?, supone menos memoria ir leyendo el recorset a medida que necesitamos comprobar algo.