我意识到下面的功能毫无意义(它可以解释这个问题)。请参阅下面的SQL:
CREATE FUNCTION [dbo].[AddOne](@Number int)
returns int
BEGIN
return @Number+1
END
select * from dbusns where reference=dbo.AddOne(1)
如果我创建该函数然后执行SQL语句,那么它会像我期望的那样返回reference = 2的记录。
有没有办法将函数作为SQL语句的一部分执行?即,不在SQL Studio管理器中首先创建它,即不在SQL Studio管理器中出现:Database / Programmability / Scaler Valued Functions。
有没有其他方法可以在没有函数的情况下接近这个?
答案 0 :(得分:0)
如果您不创建/定义该功能,则它不存在。所以你不能称之为。
这在所有语言中都是相同的,而不仅仅是在SQL / T-SQL中。当然,还有
SQL Server中的一些内置函数。这些你不需要自己定义。
答案 1 :(得分:0)
不,你所要求的是无法做到的。
Common Table Expressions(CTE)提供了一种定义临时命名结果集的方法 - 就像一次性使用视图一样,或者在文档放置时:
公用表表达式(CTE)可以被认为是在单个SELECT,INSERT,UPDATE,DELETE或CREATE VIEW语句的执行范围内定义的临时结果集
没有类似的功能允许您声明任何类似于具有相同语义类型的用户定义函数的内容 - 它只存在于单个后续语句中。
因此,如果你确实需要将你的逻辑封装在“类似函数”的东西中(获取参数和/或返回标量而不是结果集),那么你唯一的选择就是真正的永久函数。