在直通查询中使用函数调用?

Use function call in passthrough query?

我在 Access 2010 应用程序中有一个直通查询,我用它来调用 SQL 服务器后端上的存储过程。存储过程采用一个我需要动态化的参数。问题是这样的:

Execute spMyProc 'userName' 按预期工作。

Execute spMyProc getUserName() 生成 "syntax error at ')'" 消息。

是否可以在传递查询中使用函数作为参数?

另外,我应该注意到,我正在将一个复杂的 Access 应用程序迁移到 SQL 服务器,但我真的不精通我正在做的事情。对于我做错的事情的任何建议将不胜感激。这个特殊问题是由于尝试将表单的记录源从记录源 属性 中的简单 select 语句更改为服务器上可以 运行 的内容而产生的。

您可以使用此代码:

With CurrentDb.QueryDefs("MyPass")
  .SQL = "exec spMyProc '" & getUserName() & "'"
  .Execute
End With

因为 getUserName() 是本地 VBA 函数,所以您需要预先评估发送到 SQL 服务器的实际字符串。如上所示,使用保存的传递是 "handy",因为您不必处理连接字符串等