每行的调用函数

时间:2014-08-29 20:02:14

标签: sql access-vba

我使用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

1 个答案:

答案 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。您无需在函数内部更改任何