Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
 CAST или CONVERT для типа "float" указаны недопустимые атрибуты  [new]
Bubuzon
Member

Откуда:
Сообщений: 19
Доброго всем времени суток. Существует веб-приложение которое через определенный сервис на сервере лезет в базу MS SQL 2005
при попытке прочитать и записать что нибудь в таблицу базы выбрасывает такие ошибки "CAST или CONVERT для типа "float" указаны недопустимые атрибуты". Данная ошибка пишется при попытке прочитать любой реквизит таблицы. У других такая связка софта работает без ошибок. То ли в MS SQL не включены какие то блоки хранимых процедур? Надеюсь на помощь.
24 июл 11, 13:34    [11019011]     Ответить | Цитировать Сообщить модератору
 Re: CAST или CONVERT для типа "float" указаны недопустимые атрибуты  [new]
Ken@t
Member

Откуда: 大地
Сообщений: 3265
Bubuzon,

да, да во всём виноват сервер.

Исправить приложение в соответсвии с
24 июл 11, 13:42    [11019020]     Ответить | Цитировать Сообщить модератору
 Re: CAST или CONVERT для типа "float" указаны недопустимые атрибуты  [new]
Bubuzon
Member

Откуда:
Сообщений: 19
Ken@t
Bubuzon,

да, да во всём виноват сервер.

Исправить приложение в соответсвии с


Приложение не исправить, так как это Java приложение на мобильном терминале. С разрабами уже связался, жду ответа. У других это же приложение работает без проблем, значит дело не в приложении и запрос коректный, просто я думаю дело в настройке или сервера или шлюза для работы с MS SQL.
24 июл 11, 13:49    [11019036]     Ответить | Цитировать Сообщить модератору
 Re: CAST или CONVERT для типа "float" указаны недопустимые атрибуты  [new]
Ken@t
Member

Откуда: 大地
Сообщений: 3265
Bubuzon,

Запустить профайлер и посмотреть, что некорректное приходит на сервер и о этого плясать с бубном.
24 июл 11, 14:04    [11019066]     Ответить | Цитировать Сообщить модератору
 Re: CAST или CONVERT для типа "float" указаны недопустимые атрибуты  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31969
Bubuzon
У других это же приложение работает без проблем, значит дело не в приложении и запрос коректный
Значит, криворукие программисты сделали зависимым приложение от расположения звёзд на небе.

Bubuzon
просто я думаю дело в настройке или сервера или шлюза для работы с MS SQL.
Разве корректные приложения зависят от настроек?

Bubuzon
Приложение не исправить, так как это Java приложение на мобильном терминале.
Думаю, джава-приложения правятся так же, как другие.
Ken@t
Bubuzon,

Запустить профайлер и посмотреть, что некорректное приходит на сервер и о этого плясать с бубном.
+1
Для начала найти ошибку.

Тем более что:
Bubuzon
С разрабами уже связался, жду ответа
Разрабы ответят "а у меня всё работает."
24 июл 11, 14:23    [11019100]     Ответить | Цитировать Сообщить модератору
 Re: CAST или CONVERT для типа "float" указаны недопустимые атрибуты  [new]
Bubuzon
Member

Откуда:
Сообщений: 19
Запустил трассировку в профайлере, ругань идет из хранимой процедуры
25 июл 11, 12:05    [11022022]     Ответить | Цитировать Сообщить модератору
 Re: CAST или CONVERT для типа "float" указаны недопустимые атрибуты  [new]
Shakill
Member

Откуда: мск
Сообщений: 1887
Bubuzon
Запустил трассировку в профайлере, ругань идет из хранимой процедуры

проверьте правильность передаваемых в процедуру значений параметров
25 июл 11, 12:12    [11022082]     Ответить | Цитировать Сообщить модератору
 Re: CAST или CONVERT для типа "float" указаны недопустимые атрибуты  [new]
Зайцев Фёдор
Member

Откуда: Лужки
Сообщений: 5308
не смог придумать, как вызвать такую ошибку (
25 июл 11, 12:24    [11022169]     Ответить | Цитировать Сообщить модератору
 Re: CAST или CONVERT для типа "float" указаны недопустимые атрибуты  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31969
Зайцев Фёдор
не смог придумать, как вызвать такую ошибку (
Чего тут думать, передайте вместо точки запятую в числе и всё получится.
25 июл 11, 12:28    [11022198]     Ответить | Цитировать Сообщить модератору
 Re: CAST или CONVERT для типа "float" указаны недопустимые атрибуты  [new]
Зайцев Фёдор
Member

Откуда: Лужки
Сообщений: 5308
alexeyvg
Зайцев Фёдор
не смог придумать, как вызвать такую ошибку (
Чего тут думать, передайте вместо точки запятую в числе и всё получится.

select convert(float, '1,1')
Msg 8114, Level 16, State 5, Line 2
Ошибка при преобразовании типа данных varchar к float.
25 июл 11, 12:30    [11022214]     Ответить | Цитировать Сообщить модератору
 Re: CAST или CONVERT для типа "float" указаны недопустимые атрибуты  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31969
alexeyvg
Зайцев Фёдор
не смог придумать, как вызвать такую ошибку (
Чего тут думать, передайте вместо точки запятую в числе и всё получится.
Хотя нет, там другая ошибка... Нужно действительно посмотреть.
25 июл 11, 12:30    [11022217]     Ответить | Цитировать Сообщить модератору
 Re: CAST или CONVERT для типа "float" указаны недопустимые атрибуты  [new]
Shakill
Member

Откуда: мск
Сообщений: 1887
Зайцев Фёдор
не смог придумать, как вызвать такую ошибку (

некоторые делают это так
SELECT CAST(1 AS float(10, 3))
25 июл 11, 12:47    [11022362]     Ответить | Цитировать Сообщить модератору
 Re: CAST или CONVERT для типа "float" указаны недопустимые атрибуты  [new]
daw
Member

Откуда: Муром -> Москва
Сообщений: 7381

> не смог придумать, как вызвать такую ошибку (

так она вызывается:
select cast('100' as float(19, 2))
так что, не надо песен про то, что:

> дело не в приложении и запрос коректный

Posted via ActualForum NNTP Server 1.4

25 июл 11, 12:51    [11022387]     Ответить | Цитировать Сообщить модератору
 Re: CAST или CONVERT для типа "float" указаны недопустимые атрибуты  [new]
Bubuzon
Member

Откуда:
Сообщений: 19
Там с приложения идет запуск хранимой процедуры с параметрами. В процедуре уже стоят запросы с функцией CAST
25 июл 11, 14:14    [11023023]     Ответить | Цитировать Сообщить модератору
 Re: CAST или CONVERT для типа "float" указаны недопустимые атрибуты  [new]
Shakill
Member

Откуда: мск
Сообщений: 1887
Bubuzon, так выясните, какой именно cast вызывает эту ошибку
25 июл 11, 14:30    [11023142]     Ответить | Цитировать Сообщить модератору
 Re: CAST или CONVERT для типа "float" указаны недопустимые атрибуты  [new]
Raoul
Member

Откуда:
Сообщений: 177
Конструкция float(19,2) в TSQL некорректна по определению, а float(n) в MSSQL - устаревший тип. Используй либо float или real без указания длины, либо numeric(19,2).
25 июл 11, 14:31    [11023146]     Ответить | Цитировать Сообщить модератору
 Re: CAST или CONVERT для типа "float" указаны недопустимые атрибуты  [new]
Зайцев Фёдор
Member

Откуда: Лужки
Сообщений: 5308
Bubuzon
Там с приложения идет запуск хранимой процедуры с параметрами. В процедуре уже стоят запросы с функцией CAST

надеюсь, процедура не на Java? )
25 июл 11, 14:33    [11023159]     Ответить | Цитировать Сообщить модератору
 Re: CAST или CONVERT для типа "float" указаны недопустимые атрибуты  [new]
Shakill
Member

Откуда: мск
Сообщений: 1887
Raoul
float(n) в MSSQL - устаревший тип. Используй либо float или real без указания длины, либо numeric(19,2).
это где написано про устаревший тип? а float без явного указания длины получится не устаревшим?
25 июл 11, 14:45    [11023237]     Ответить | Цитировать Сообщить модератору
 Re: CAST или CONVERT для типа "float" указаны недопустимые атрибуты  [new]
Raoul
Member

Откуда:
Сообщений: 177
Shakill,

В MSSQL синтаксис float(n) сохраняется только для совместимости с ISO. float(1)-float(24) на выходе физически дают real (float(24) в ISO), никакой разницы между float(1) и float(24) ты не почувствуешь.

float(25)-float(53) на выходе дадут float (float(53) в ISO), также без какой-либо физической разницы внутри этого диапазона.
25 июл 11, 14:55    [11023302]     Ответить | Цитировать Сообщить модератору
 Re: CAST или CONVERT для типа "float" указаны недопустимые атрибуты  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31969
Raoul
Shakill,

В MSSQL синтаксис float(n) сохраняется только для совместимости с ISO. float(1)-float(24) на выходе физически дают real (float(24) в ISO), никакой разницы между float(1) и float(24) ты не почувствуешь.

float(25)-float(53) на выходе дадут float (float(53) в ISO), также без какой-либо физической разницы внутри этого диапазона.
Тоже не слышал, что float(n) устаревший.

Вполне применимо и может использоваться, разница между float(1) и float(53) есть.
25 июл 11, 15:03    [11023360]     Ответить | Цитировать Сообщить модератору
 Re: CAST или CONVERT для типа "float" указаны недопустимые атрибуты  [new]
Shakill
Member

Откуда: мск
Сообщений: 1887
Raoul, сделано для совместимости с ISO - не значит, что тип устаревший. просто запись без n короче, а в остальном ничем не лучше и не хуже
25 июл 11, 15:06    [11023373]     Ответить | Цитировать Сообщить модератору
 Re: CAST или CONVERT для типа "float" указаны недопустимые атрибуты  [new]
Raoul
Member

Откуда:
Сообщений: 177
alexeyvg
разница между float(1) и float(53) есть.

А я говорил, что нету? Есть разница между диапазонами 1-24 и 25-53, первый эквивалентен нативному real, второй - нативному float. Но внутри диапазонов разницы нет, так что если не планируется кроссплатформенная разработка, проще не парить себе мозг и использовать нативные типы.
25 июл 11, 15:09    [11023397]     Ответить | Цитировать Сообщить модератору
 Re: CAST или CONVERT для типа "float" указаны недопустимые атрибуты  [new]
iap
Member

Откуда: Москва
Сообщений: 47142
Raoul
alexeyvg
разница между float(1) и float(53) есть.

А я говорил, что нету? Есть разница между диапазонами 1-24 и 25-53, первый эквивалентен нативному real, второй - нативному float. Но внутри диапазонов разницы нет, так что если не планируется кроссплатформенная разработка, проще не парить себе мозг и использовать нативные типы.
Может, ссылка какая есть?
25 июл 11, 15:15    [11023438]     Ответить | Цитировать Сообщить модератору
 Re: CAST или CONVERT для типа "float" указаны недопустимые атрибуты  [new]
Bubuzon
Member

Откуда:
Сообщений: 19
Вот строка трассировки :
declare @p2 varchar(8000)
set @p2=NULL
exec termDocRowWork
'TERMNUMBER=4§USERNAME=4§USERPWD=4§CLIENTVERSION=2.0.15§USERSESSIONID=50§DOCNUMBER=3§DOCDATE=20110725§DOCID=5§DOCTYPE=1§DOCACTION=1§SELLERTABNUMBER=4§PRINTERNUMBER=1§PRINTERCOPIES=§PRINTERPATTERNID=§STOREAREACODE=0§DEPARTNUMBER=1§DOCPOSGETFROMNUMBER=1§DOCPOSGETTONUMBER=12§DOCPOSACTION=1§DOCCURRENTPOS=§DOCGOODSITEM=§DOCGOODSBARCODE=8001250485373§DOCPOSQUANTFACT=0.0§DOCGOODSPRICE=0.00§DOCGOODSPRICEBASE=0§SELLERID=1§OFFLINEINSERT=0§DOCPOSQUANT=§DOCPOSPRICEFACT=0.00§DOCPOSPRICE=0.00§DOCPOSUNLOCK=§',@p2
output
select @p2

В хранимой процедуре такие строчки:

Set @DocGoodsPrice = cast(@TmpStr AS float(12,2))
Set @DocPosQuant = cast(@TmpStr AS float(12,2))
Set @DocPosPrice = cast(@TmpStr AS float(12,2))
Set @DocPosPriceFact = cast(@TmpStr AS float(12,2))
Set @DocPosQuantFact = cast(@TmpStr AS float(12,2))
Set @DocPosQuant = cast(@TmpStr AS float(12,2))
25 июл 11, 15:27    [11023530]     Ответить | Цитировать Сообщить модератору
 Re: CAST или CONVERT для типа "float" указаны недопустимые атрибуты  [new]
Shakill
Member

Откуда: мск
Сообщений: 1887
Bubuzon, конструкция
Set @DocGoodsPrice = cast(@TmpStr AS float(12,2))
- некорректна. переделывайте хранимку
25 июл 11, 15:37    [11023598]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
Все форумы / Microsoft SQL Server Ответить