Hay veces que por mucha clase que se tenga, si no hace bien los procedimientos te puede dar dolor de cabeza, en vez de ponerte las cosas sencillas.
Estoy casi seguro que no usa
gettype para comprobar que tipo de dato recibe, y por eso te los devuelve todos como string.
De todas maneras si esa consulta va a devolverte siempre números y no letras puedes forzarle a convertirlos, con
settype.