Как вы уже знаете, вы не можете определить эту информацию из каких-либо метаданных базы данных (поскольку их нет) - и, к сожалению, вы также не можете определить ее из набора результатов - по крайней мере, ни одним надежным, детерминистическим способом.
Когда вы вызываете хранимую процедуру, все, что вы получаете, это набор столбцов и набор строк. Нет доступной информации о типах этих столбцов. Лучшее, что вы можете сделать, это угадать - если данные содержат буквенно-цифровые символы, это поле VARCHAR / string. Если он имеет только числовые цифры и, возможно, десятичный разделитель, это, вероятно, будет INT или DECIMAL (или MONEY или SMALLMONEY - точно сказать не могу). Если оно выглядит как ДАТА и может быть преобразовано в ДАТУ, это, вероятно, ДАТА, ДАТАЙМ, ДАТАЙМ2 или что-то подобное.
Единственный надежный способ - иметь некоторую документацию о выходных значениях, которые генерирует хранимая процедура. Все остальное - в лучшем случае догадки.