下面的示例代碼意外失敗時返回錯誤不工作,通過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