下面的示例代码意外失败时返回错误不工作,通过VBA一个ADODB连接运行两个SQL语句时多个SQL语句预期
Dim conn As ADODB.Connection
Set conn = return_connection(server:="Database")
test_statement = "Select (1) if 1=1 THROW 50001, 'Error description', 1;"
conn.Execute (test_statement)
但是运行下面的语句来代替
Dim conn As ADODB.Connection
Set conn = return_connection(server:="Database")
test_statement1 = "Select (1)"
test_statement2 = "if 1=1 THROW 50001, 'Error description', 1"
conn.Execute (test_statement1)
conn.Execute (test_statement2)
完美地工作。
此外,如果我复制和粘贴
Select (1) if 1=1 THROW 50001, 'Error description', 1;
到SQL管理员它的工作原理完全如我所料有问题的代码做的事:做一个选择,然后抛出一个错误。
任何人都可以解释这一点吗?
显而易见的'解决方案'是分离出不同的语句,在VBA中分开运行,我将从现在开始。
但是,我显然不明白Adodb如何与SQL协同工作,因此我想知道是什么导致了这种行为。此外,我还有一些不重要的多重SQL语句,这些语句被连接在一起,然后通过Adodb连接传递给SQL,所以我想知道何时可以安全地执行以及何时需要重新构建代码。
不幸的是,ADODB sql代码仍然不能像预期的那样使用分号,至少在我的结尾。 我正在研究存储过程,并且通常不再使用VBA来存储和触发复杂的SQL-但不幸的是,我受到其他因素的限制,无法使用此存储过程 – Eladriol