【发布时间】:2011-01-13 01:18:41
【问题描述】:
我得到了这段代码,我想优化一下。 我以后基本上可以在“Disp”表中添加新列,我不想回来修改这个函数。 我不能使用动态 SQL。正确的?在我的情况下还有什么其他方法可以解决吗?
这是函数:
ALTER FUNCTION [GetDate]
(@hdrnumber INT, @DateColName VARCHAR(50))
RETURNS DATETIME
AS
BEGIN
DECLARE @dt DATETIME
SELECT @dt = CASE
WHEN @DateColName = 'ord_bookdate' THEN [ord_bookdate]
WHEN @DateColName = 'ord_startdate' THEN [ord_startdate]
WHEN @DateColName = 'ord_completiondate' THEN [ord_completiondate]
WHEN @DateColName = 'pack_date_from' THEN [pack_date_from]
WHEN @DateColName = 'pack_date_to' THEN [pack_date_to]
END
FROM [Disp]
WHERE [hdrnumber] = @hdrnumber
RETURN @dt
END
(删除了一些代码,因为它很长,但希望我在这里留下的内容对你们有意义)
如何使用此功能? 好吧,它基本上看起来像这样:
insert into tablename (...)
select somedate, [GetDate](somedate, somecolumn)
from sometable
where 1 = 1
【问题讨论】:
-
有点题外话,但我会推荐一个不同的函数名称,以消除与内置 GETDATE() 函数的任何可能混淆
标签: sql-server optimization function dynamic