t-sqlストアドプロシージャを多用するJavaアプリケーションをデバッグしています。投稿のタイトルエラーが発生することがあります。エラーが発生する場所を見つけたと思いますが、T-SQLは私のスキルの1つではありません。誰かが私が正しいことを確認し、解決策を提案できますか?
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)
エラー:8114、重大度:16、状態:5
データ型varcharから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プログラマーではないと言ったので、ヒントをいただければ幸いです。