t-SQLストアドプロシージャを頻繁に使用するJavaアプリケーションをデバッグしています。時々私はポストのタイトルエラーを取得します。私はエラーが発生する場所を見つけたと思うが、T-SQLは私のスキルの中にない。誰かが私が正しいことを確認して解決策を提案できますか?T-SQL:エラー:8114、重大度:16、状態:5データ型varcharをfloatに変換する際のエラー
SQL Server 2005のスタックトレースが表示され、次のメッセージ:
set @prezzoUnitario2f = [C4].[dbo].[funcCtrlConvertToFloat] (@prezzoUnitario2) --CONVERT(float,replace(@prezzoUnitario2,',','.'))
これはfuncCtrlConvertToFloat
機能は次のとおりです:
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 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プログラマではないよ言ったので、任意のヒントが
に役立ちますあなたは**それに送信されます入力**どのような種類のチェックすることができます関数??それはいくつかの健全性チェックを行うように見えますが、何らかの理由でそれらは常に機能していません。どの値が関数に渡されるのが役立つかが分かります –