gpt4 book ai didi

sql-server - 仅使用正确的参数顺序在 Access VBA 中调用存储过程,为什么?

转载 作者:行者123 更新时间:2023-12-03 08:26:06 28 4
gpt4 key购买 nike

我在从 Access 执行存储过程时遇到了一点问题。我将“Microsoft ActiveX 数据对象 2.8 库”与 MS SQL Server 2008 一起使用。

现在我这样调用存储过程:

Set cmd = init_adodbcommand("sp_002_test_tabellenparameter")

cmd.Parameters("@str_test") = "Test"
cmd.Parameters("@str_test2") = "Test"

cmd.Execute

我同意,但是如果我在存储过程中使用 nvarchar(max) 变量会出现问题,所以我使用这段代码,它也能正常工作:

    Set cmd = init_adodbcommand("sp_002_test_tabellenparameter")

cmd.Parameters.Append cmd.CreateParameter("@str_test", adLongVarWChar, adParamInput, -1, "Test")
cmd.Parameters.Append cmd.CreateParameter("@str_test2", adLongVarWChar, adParamInput, -1, "Test")

cmd.Execute

它也有效,但前提是参数顺序正确,就像它们被添加到服务器上的存储过程中一样。对于我在开头提到的第一个选项,这种行为不会发生!使用此选项,我可以直接寻址参数。

服务端sp的代码是这样开头的:

    ALTER PROCEDURE [dbo].[sp_002_test_tabellenparameter]
-- Add the parameters for the stored procedure here
@str_test nvarchar(max) = NULL,
@str_test2 nvarchar(max) = NULL

我有很多包含 30 多个参数的存储过程,其中一些参数有时并不需要,我不会不在乎正确的顺序...:D

看起来我在 Access 中使用的参数名称并不重要。

我的错在哪里?

谢谢! :)

要初始化的附件代码:

Dim cmd_temp As ADODB.Command
Dim adoconn_connection_tmp As ADODB.Connection

Set adoconn_connection_tmp = New ADODB.Connection

Set adoconn_connection_tmp = ADOConnObj

Set cmd_temp = New ADODB.Command

cmd_temp.CommandType = adCmdStoredProc
cmd_temp.CommandText = str_prozedurname
cmd_temp.ActiveConnection = adoconn_connection_tmp

Set init_adodbcommand = cmd_temp

End Function

最佳答案

你需要添加行

cmd_temp.NamedParameters = True 

命令对象初始化器。

关于sql-server - 仅使用正确的参数顺序在 Access VBA 中调用存储过程,为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39368635/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com