【发布时间】:2010-09-27 15:56:18
【问题描述】:
这是this question的后续报道。
函数不允许写入数据库,但如果我想在每次调用函数时更新记录怎么办,特别是递归函数?
目前,我有一个接受 ID 并返回浮点数的函数。我想使用给定的 ID 和返回的浮点数更新表。通常,可以使用一个简单的存储过程来调用该函数,然后进行更新。我的函数是递归的,所以解决方法没那么简单……
我正在考虑尝试这样做:
- 创建递归函数,以便将表作为参数
- 如果表为空,则创建它;否则,将表复制到一个新变量(因为它将是只读的)
- 在进行递归调用之前更新函数中复制的表,并将副本传递给函数
- 最后,返回完整的表格(不确定我如何“知道”它是否完整)
- 从使用返回的表进行多次更新的存储过程调用此函数
在尝试类似的方法之前,我正在寻找替代方案。好像以前也有过。
【问题讨论】:
-
为什么“调用函数”/“将返回值写入表”模型不适用于您的递归函数?
-
对于什么版本的 SQL Server?更多细节会有所帮助
-
@Tomalak 每次调用函数时我都需要写返回值,而不仅仅是递归函数返回的最终值。
标签: sql sql-server recursion user-defined-functions