Ο Long datatype δεν είναι αντίστοιχος του varchar αλλά των (n)text/image και υπάρχει μόνο για backwards compatibility. Κανονικά θα πρέπει να χρησιμοποιείς τους τύπους NCLOB, CLOB ή BLOB για να αποθηκεύσεις μεγάλο όγκο δεδομένων. Ο τύπος LONG είναι τζιζ σύμφωνα με τη μαμά .... Oracle.
Το πως θα βρεις το μέγεθος του εξαρτάται από το ποιόν provider χρησιμοποιείς. Αν χρησιμοποιείς τον ADO.NET provider της Microsoft τα περιεχόμενα του LONG διαβάζονται ως string οπότε μπορείς να χρησιμοποιήσεις την String.Length αλλά ... έτσι θα φορτωθεί ολόκληρο το περιεχόμενο του πεδίου. Στο documentation της Oracle αναφέρεται ότι ένα από τα μειονεκτήματα του LONG είναι ότι φορτώνεται μονομιάς, οπότε μάλλον δεν το γλυτώνεις αυτό. Τόσο o provider της Oracle, o ODP.NET όσο και αυτός της CoreLabs, o OraDirect.NET συμπεριφέρονται με τον ίδιο τρόπο.
Αν μπορείς να μετατρέψεις τον LONG σε κάποιο από τους LOB τύπους, θα μπορείς να χρησιμοποιήσεις την κλάση OracleLOB η οποία σου επιτρέπει να ρωτήσεις το μέγεθος μέσω της Length και να φορτώσεις το περιεχόμενο του πεδίου σε τμήματα με τη Read.
Παναγιώτης Καναβός, Freelancer
Twitter: http://www.twitter.com/pkanavos