PHP+MSSQL. PHP обрезает результат выполнения MSSQL функции.

Alexey(Eburg)

Новичок
PHP+MSSQL. PHP обрезает результат выполнения MSSQL функции.

Доброго времени суток. Есть функция написанная на T-SQL:
PHP:
CREATE FUNCTION dbo.fn_test() 
RETURNS varchar(8000)
AS
BEGIN
return 'Строка содержащая >255 символов'
END

В php пытаюсь вывести результат выполнения этой функции
$res = mssql_query('select dbo.fn_test() as test');
for ($i=0; $row = mssql_fetch_assoc($res); $i++)
{
     echo strlen($row['test']);
}
На сервере запрос выполняется нормально, то есть выдает то что нужно.
PHP выводит стабильно, что длина строки 255, то есть происходит обрезание текста. Хотя очень длинные поля из таблиц выбирает нормально, а вот из функции не хочет. Может кто сталкивался - подскажите что делать?

-~{}~ 25.05.06 14:18:

Решение как всегда пришло после вопроса на форуме!
Запрос нужно переписать следующим образом:
select convert(text,dbo.fn_test()) as test
В T-SQL функции нельзя возвращать скалярное значение типа text, а только этот тип возвращается функциями php работы с MSSQL c числом знаков >255, то есть надо просто показать, что я возвращаю данные типа text. Пока я вижу, что это единственная возмжость вернуть корректный результат.
Кстати, это первое неудобство при работе с функциями php по работе с MSSQL, которое я обнаружил.

Надеюсь мои выводы кому-нибудь помогут!

-~{}~ 25.05.06 16:35:

Резюмируя еще разок скажу, что все варчары выводятся размерностью 255, то есть если у вас поле в базе varchar(1000), то выбрав его вы получите только 255 знаков. Но я думаю у опытных людей таких вещей не возникнет!
 
Сверху