gpt4 book ai didi

sql-server - VB6+SQL-Server : How can I execute a Query with named parameters using ADODB. 命令?

转载 作者:行者123 更新时间:2023-12-03 01:09:01 24 4
gpt4 key购买 nike

我一直在尝试使用 ADODB.Command 执行参数化查询。我知道我可以使用“?”对于参数,但我的查询相当大,我真的不想跟踪参数的确切顺序。我尝试了类似以下的方法:

objCmd.CommandType = adCmdText
objCmd.CommandText = "SELECT ... WHERE field1=@p_Field1 ...."
Dim objParam As ADODB.Parameter
Set objParam = objCmd.CreateParameter("@p_Field1" ...)
objCmd.Parameters.Append objParam
...
objCmd.Open

它适用于存储过程参数(显然,设置 CommandType = adCmdStoredProc),但由于查询本身的动态性质,我无法在存储过程中执行此操作。当我尝试运行查询时,出现错误:

 Must declare the scalar variable "@p_Field1"

有没有其他方法可以解决此问题,而不涉及使用存储过程或(呃)连接查询本身中的参数值并且根本不使用参数?

最佳答案

您可以这样做,以便重用参数

objCmd.CommandText = "declare @var1 int, @var2 int, @var3 int; " & _
"select @var1 = ?, @var2 = ?, @var3 = ?;" & _
"select ... where field1 = @var1 or field4 = @var1 or field2 = @var2 ... "

并按正常顺序添加参数。

关于sql-server - VB6+SQL-Server : How can I execute a Query with named parameters using ADODB. 命令?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1109826/

24 4 0