我使用Access。我已经存储了函数从另一个表返回随机关键字。如果我在我的SQL查询中插入此函数,则在每行上接收相同的结果(相同的关键字)。 如何在SQL中轻松实现为每一行调用此函数?
SELECT ID, StoredFunction() AS Result
FROM Table
_
ID Result
-------------------
1 | 1 result
2 | 1 result
3 | 1 result
我需要
ID Result
-------------------
1 | 1 result
2 | 2 result
3 | 3 result
答案 0 :(得分:2)
您在每行中获得相同结果的原因是Access尝试为您优化查询。它看到StoredFunction()
每行调用一次,并认为因为没有参数传入函数,所有调用都应该返回相同的结果。关于你的功能的性质,这显然是不正确的。您可以通过将一个或多个参数传递给函数来避免此自动优化。不必以任何方式使用参数,但Access会将StoredFunction(ID)
看作需要在每一行调用的内容,因为结果可能不同。您需要做的就是将函数声明从Public StoredFunction() As Variant
更改为Public StoredFunction(v As Variant) As Variant
。然后,将您的查询更改为SELECT ID, StoredFunction(ID) AS Result FROM Table
。您无需在函数内部更改任何 。