udf 在 t-sql 编程中没有正确返回数据
Posted
技术标签:
【中文标题】udf 在 t-sql 编程中没有正确返回数据【英文标题】:udf not returning data correctly in t-sql programming 【发布时间】:2010-07-02 19:28:01 【问题描述】:功能如下:
ALTER FUNCTION dbo.FN_GET_QUARTER
-- the parameters for the function here
(
@FN_Qtr_date datetime
)
RETURNS INT
AS
BEGIN
RETURN datepart(qq,@FN_Qtr_date)
END
这里是 SQL 报告:
IF(SELECT(OBJECT_ID('TEMPDB..#T1'))) IS NOT NULL DROP TABLE #T1
SELECT L_NUMBER, LAST_MAINTENANCE_DATE,
dbo.FN_FICO_BANDS (LAST_MAINTENANCE_DATE) AS FN_Qtr_date
INTO #T1
FROM OPENQUERY(SrvLink, '
SELECT LOAN_NUMBER,LAST_MAINTENANCE_DATE
FROM BDE.loan_V
FETCH FIRST 1000 ROWS ONLY WITH UR ')
GO
SELECT COUNT(*), FN_Qtr_date
FROM #T1
GROUP BY FN_Qtr_date
ORDER BY FN_Qtr_date
结果:
L count FN_Qtr_Date
150 Invalid
355 Invalid
我不知道我做错了什么..
【问题讨论】:
你定义FN_GET_QUARTER
并调用 FN_FICO_BANDS
:-?
【参考方案1】:
我首先想到的是你打电话给dbo.FN_FICO_BANDS
而不是dbo.FN_GET_QUARTER
【讨论】:
【参考方案2】:dbo.FN_FICO_BANDS (LAST_MAINTENANCE_DATE) AS FN_Qtr_date
如果您要在 LAST_MAINTENANCE_DATE 使用该功能,您需要使用: dbo.FN_Qtr_Date(LAST_MAINTENANCE_DATE) 作为你的季度
【讨论】:
以上是关于udf 在 t-sql 编程中没有正确返回数据的主要内容,如果未能解决你的问题,请参考以下文章
T-SQL里数据库工程师都不知道的秘密之SQL Server自定义函数UDF