注:以下に表示されている患者データは、私が作成した「ダミー」データです。実際の患者の実際の情報ではありません。
次の変換を含む関数があります。
Declare @bdate date
set @bdate = CONVERT ( date , left(@dob,8) , 112 )
これをクエリウィンドウで実行すると、日付がうまく変換されます
select CONVERT(date, left('19900101', 8), 112) //returns a good date
しかし、ビジュアルスタジオで同じコードを含むスカラー関数をステップ実行すると、エラーが発生します...
Declare @bdate date
set @bdate = CONVERT ( date , left(@pidPatientDob,8) , 112 )
投げる...
[dbo].[getAgeAtTestDate] ( @obxTestDate = '20120101', @pidPatientDob = '19900101' ) を実行しています。
文字列から日時を変換する際に変換に失敗しました。データが存在しない場合の読み取りの試みは無効です。
クエリウィンドウでは機能するのに、関数では機能しないのはなぜですか? 関数でパラメータが適切に入力されているようです。
これはnullを返す関数の全文です(エラーのためだと思います)
ALTER FUNCTION [dbo].[getAgeAtTestDate]
(
-- Add the parameters for the function here
@obxTestDate as nvarchar(50), @pidPatientDob as nvarchar(50)
)
RETURNS int
AS
BEGIN
Declare @bdate date
set @bdate = CONVERT ( date , left(@pidPatientDob,8) , 112 )
Declare @testDate date
set @testDate = CONVERT ( date , left(@testDate,8) , 112 )
-- Return the result of the function
RETURN datediff(mm, @testDate, @bdate)
END