Я отлаживаю приложение Java, которое в значительной степени использует хранимую процедуру t-sql. Иногда я получаю ошибку заголовка сообщения. Я думаю, что нашел место, где произошла ошибка, но T-SQL не входит в число моих навыков. Может ли кто-нибудь подтвердить, что я прав, и предложить решение, пожалуйста?T-SQL: Ошибка: 8114, Уровень важности: 16, Состояние: 5 Ошибка преобразования типа данных varchar в float
SQL Server 2005 трассировки стека показать следующие сообщения:
set @prezzoUnitario2f = funcCtrlConvertToFloat] (@prezzoUnitario2)
IF @prezzoUnitario2f IS NULL OR cast(@prezzoUnitario2f as varchar) = '' OR @prezzoUnitario2f < 0
SET @defaultValue = NULL
IF ((select ISNUMERIC(@valueIn)) = 1)
Error: 8114, Severity: 16, State: 5
Error converting data type varchar to float.
Это где хранимая процедура вызовов возможны funcCtrlConvertToFloat
функции:
set @prezzoUnitario2f = [C4].[dbo].[funcCtrlConvertToFloat] (@prezzoUnitario2) --CONVERT(float,replace(@prezzoUnitario2,',','.'))
Это функция funcCtrlConvertToFloat
:
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER FUNCTION [dbo].[funcCtrlConvertToFloat]
(
@valueIn varchar(100)
)
RETURNS float
AS
BEGIN
DECLARE @defaultValue float
DECLARE @returnValue float
SET @defaultValue = NULL
--SET @valueIn = ISNULL(@valueIn, 0)
IF ((select ISNUMERIC(@valueIn)) = 1)
BEGIN
SET @returnValue = CONVERT(float,replace(@valueIn ,',','.'))
END
ELSE
BEGIN
SET @returnValue = @defaultValue
END
RETURN @returnValue
END
Как я уже сказал, я не T-SQL программист, поэтому любой намек был бы оценен
Вы можете проверить, какой ** вход ** отправляются к тому, что функция ?? Кажется, что он делает некоторые проверки здравомыслия, но по какой-то причине они не работают все время - зная, какие значения передаются в функцию, было бы полезно –