gpt4 book ai didi

sql - 内联标量函数 : real or vaporware?

转载 作者:行者123 更新时间:2023-12-02 06:43:50 25 4
gpt4 key购买 nike

在 SQL Server 中创建内联标量函数的正确语法是什么?

在线图书,位于 Types of Functions第 1 章(2005 年及以上)讨论了内联标量函数,就好像它们存在一样,并且不需要 BEGIN...END block (与多行函数相反):

For an inline scalar function, there is no function body; the scalar value is the result of a single statement. For a multistatement scalar function, the function body, defined in a BEGIN...END block, contains a series of Transact-SQL statements that return the single value.

我还注意到 spt_values 表中的对象类型列表中有一行“IS:内联标量函数”:

SELECT name
FROM master..spt_values
WHERE type = 'O9T'
AND name LIKE '%function%'

我尝试创建这样的函数但没有成功:

CREATE FUNCTION AddOne(@n int) RETURNS int
AS
RETURN @n + 1

错误信息是

Msg 102, Level 15, State 31, Procedure AddOne, Line 3 Incorrect syntax near 'RETURN'.

我是否遗漏了某些内容或者在线图书中有错误?

最佳答案

嗯,据我所知,不存在(甚至在隐藏的 [mssqlsystemresource] 数据库中也不存在)并且没有语法来创建一个。因此,看来 Microsoft 在 SQL Server 2005 的启动阶段就已经预料到了这一点,为此添加了一个类型(以及文档!),但由于某种原因从未实际实现过。

虽然它是所有 Ms Sql Server 中最受欢迎的功能之一。主要是因为默认的 UDF 太慢,我们最终不得不后端 ITVF 才能获得相同的效果。 (困难且笨拙,但它有效)。

关于sql - 内联标量函数 : real or vaporware?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10433225/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com