Visual studio 被T-SQL弄糊涂了:在查询窗口中运行查询时,作为标量函数的一部分,输出不同
注意:下面显示的患者数据是我编造的“虚拟”数据。它不是实际患者的实际信息 我有一个函数,其中包含以下转换:Visual studio 被T-SQL弄糊涂了:在查询窗口中运行查询时,作为标量函数的一部分,输出不同,visual-studio,tsql,Visual Studio,Tsql,注意:下面显示的患者数据是我编造的“虚拟”数据。它不是实际患者的实际信息 我有一个函数,其中包含以下转换: Declare @bdate date set @bdate = CONVERT ( date , left(@dob,8) , 112 ) 如果我只是在查询窗口中运行它,它会转换日期 select CONVERT(date, left('19900101', 8), 112) //returns a good date 但是如果我在VisualStudio中单步执行一个标量函数
Declare @bdate date
set @bdate = CONVERT ( date , left(@dob,8) , 112 )
如果我只是在查询窗口中运行它,它会转换日期
select CONVERT(date, left('19900101', 8), 112) //returns a good date
但是如果我在VisualStudio中单步执行一个标量函数,其中包含相同的代码,我会得到一个错误
Declare @bdate date
set @bdate = CONVERT ( date , left(@pidPatientDob,8) , 112 )
扔
正在运行[dbo].[GetAgeDetectDate](@obxTestDate='20120101',
@PidPatientDB='19900101')
从字符转换日期和/或时间时转换失败
一串当不存在数据时尝试读取无效
为什么它在查询窗口中工作而在函数中不工作?似乎函数中的参数已正确填充
这是函数的全文,返回null(我认为是因为错误)
您的参数名为
obxTestDate
,而不是testDate
,因此请更改
set @testDate = CONVERT ( date , left(@testDate,8) , 112 )
进入
事情会变得更好
作为旁注,我认为您也颠倒了DATEDIFF
,开始日期应该在结束日期之前
RETURN datediff(mm, @bdate, @testDate)
iaakson好吧,就这样。啊!
set @testDate = CONVERT ( date , left(@obxTestDate,8) , 112 )
RETURN datediff(mm, @bdate, @testDate)