2010-07-02 111 views
19

我有一个复杂的表达式来计算我必须在多个日期列上使用的日期的值。
我可以在我的查询中定义临时本地函数,以避免复制并粘贴此表达式。 ?是否可以在TSQL查询中定义本地函数?

喜欢:

create MyLocalFunc(@ADate datetime) 
returns int as 
begin 
    blablabla 
end 

select 
    MyLocalFunc(col1), col2, MyLocalFunc(col3), col4, MyLocalFunc(col5) 
from 
    mytable 

作为一种变通方法,我知道我可以做一个CREATE FUNCTION // DROP FUNCTION,但我宁愿避免它。

+0

请参阅: http://stackoverflow.com/questions/981451/can-i-create-a-one-time-use-function-in-a-script-或存储过程 – Weasle 2015-12-02 22:57:51

回答

6

不,没有办法 - 创建/删除是唯一的选择。

+0

此答案提到了一种可能的方式:http://stackoverflow.com/a/981461/750216 – 2016-05-18 12:07:40

0

不,不是本地的。但是你可以在数据库中创建一个UDF,它不必实际访问任何数据来进行计算。

为什么不使它成为一个永久的UDF?

1

SQL Server支持anonymous blocks通过将查询放入BEGIN/END块中,但我一直无法找到某个人在其中定义函数的示例。甲骨文有一段时间的功能...

+0

您能解释更多关于SQL Server中的匿名块吗?该链接被破坏,我自己找不到任何东西。 – 2016-08-10 09:00:30