【发布时间】:2014-07-22 15:32:29
【问题描述】:
我似乎很难从我的 SP 获取返回值到 VBA。
我在我的 T-SQL 中发出了 RETURN,这很好,但我似乎无法弄清楚如何在 VBA 中获取值?
Dim qd As QueryDef
Dim db As DAO.Database
Dim vRate As Integer
vRate = 3
Set db = CurrentDb
Set qd = db.QueryDefs("spCC_UpdateRAG")
' inital rating
qd.SQL = "EXEC spCC_UpdateRAG @Col = 'Rating', @RAG = " & Nz(vRate, "NULL") & ", @Case_ID = 36"
qd.Execute
除了我似乎无法获得返回值之外,这工作正常吗?
所以我想我会尝试使用 OUPUT 参数,但是如果你不给它们分配一个值,SQL 就会抱怨,这没有意义,因为它们是输出而不是输入参数?
所以我在我的 T-SQL 中尝试了这个...
-- return failure (false)
SET @Result = 0
SELECT @Result
但这给了我一个我不想要的结果集返回和一个没有名称的列,所以如果我必须这样做..
-- return failure (false)
SET @Result = 0
SELECT @Result AS Result
有什么意义?我还不如...
SELECT 0 AS Result
无论哪种方式,我都会返回一个记录集,但我不想要一个,我只想返回一点(真/假)
SP 成功与否,我如何做到这一点并在我的 VBA 代码中获取值?
感谢您的意见。 1DMF
【问题讨论】:
-
查看
adParamReturnValue参数在this SO answer 中ADODB.Command对象的CreateParameter方法中是如何使用的。 -
?我没有使用 ADODB,您是说无法使用访问社区告诉我的内容用于我的所有数据库活动 -> DAO。
-
这不是我可以一句话回答的问题。简短的回答是在 DAO 与 ADODB 的情况下,“始终使用 X”过于简单化了。您几乎总是可以侥幸支持一种选择,而且通常不会注意到任何真正的区别。我建议你做一些谷歌搜索。
-
关于“访问社区已告知我将 [DAO] 用于我的所有数据库活动”,DAO 最适合 Jet/ACE 数据库引擎。 ADODB允许你直接接入SQL Server,所以我推荐在这种情况下使用,这与general consensus一致。
-
谢谢 Mike,我会调查一下,不过我会指出,我只使用 MS SQL 通过链接表或 SP 以及使用 DAO 的直通查询,并且已经使用了很多年,因此想知道为什么人们声称您需要 ADODB,而我知道您不需要 SQL。总是很难从人们的意见中筛选出真相以及解决问题的实际需要。
标签: sql-server vba tsql stored-procedures