phi*_*ool 6 sql-server ms-access vba stored-procedures
这应该是真的很容易,但我还没有找到一个真正简洁的答案.我在sql server中有一个非常简单的存储过程,它返回一个整数值.我想要做的就是将返回值转换为变量以便在Access中使用.
存储过程:
ALTER PROCEDURE [dbo].[out_GetNextID]
@NextSumID integer
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
-- Insert statements for procedure here
SELECT @NextSumID = IDENT_CURRENT('Outage Summary')+IDENT_INCR('Outage Summary')
RETURN @NextSumID
END
Run Code Online (Sandbox Code Playgroud)
我正在使用ADODB来执行存储过程,我不得不问这个问题,但是在运行cmd.Execute之后如何访问Access中的返回值?提前谢谢,抱歉这个蹩脚的问题.
有两种方法,使用输出参数或设置a ReturnValue(下面讨论).对于OUTPUT参数,引用此SO链接:
基本上你只需要创建一个SqlParameter,将Direction设置为Output,并将其添加到SqlCommand的Parameters集合中.然后执行存储过程并获取参数的值.
请参阅该页面中的代码.
但是,您还需要在变量声明中包含单词OUT(或OUTPUT):
@NextSumID integer OUT
Run Code Online (Sandbox Code Playgroud)
当您将变量声明为OUT(或OUTPUT)时,它将自动返回,具有程序完成时的任何值,因此您可以使用RETURN.
相反,您可以使用,RETURN @NextSumID因为您只返回一个整数值.对于此方法,您需要将参数指定为ReturnValue:
theParameter.Direction = ParameterDirection.ReturnValue
Run Code Online (Sandbox Code Playgroud)