2012-07-25 99 views
3

我已經在那裏我打電話甲骨文檢索使用ODBC數據兩倍的VBA代碼。 第一次數據檢索很好。但是,第二次則說,Oracle數據庫查詢拋出錯誤的第二次運行

**RunTime Error '-2147467259 (80004005)'; Unspecified error** 

我的代碼如下,

注:相同的代碼工作,用於連接Teradata的,但沒有當我使用 甲骨文

'First Data retrieval 
Query1 = "Select TableName from all_tables" 
CmdSQLData.CommandText = Query1 
CmdSQLData.CommandType = adcmdText 
CmdSQLData.Timeout=0 
set rs = CmdSQLData.Execute() 
'Then code to store data ... 
'This part gives proper result ... 
rs.close() 

'Second Data retrieval 
Query2 = "Select * from db.Event" 
CmdSQLData.CommandText = Query2 
CmdSQLData.CommandType = adcmdText 
CmdSQLData.Timeout=0 
set rs = CmdSQLData.Execute() 'This line Gives Error - RunTime Error '-2147467259 (80004005)'; Unspecified error 

此外,我嘗試創建新的命令對象cmdSQLData1但還是同樣的錯誤

可我知道爲什麼錯誤來對第二個查詢? 查詢沒有問題,因爲我在oracle目錄中測試過。 請讓我知道

+0

請不要把關鍵字質疑冠軍。這是標籤的用途。問題標題只能包含關鍵字,如果它們可以有機地使用,而不是夾在問題的開頭(或結尾)。我們不要陷入編輯之戰。有關更多信息,請參閱http://meta.stackexchange.com/a/10651/147645。 – JimmyPena 2012-07-25 18:34:30

回答

1

你不會在任何地方看到這個記錄,但是重用Command具有不同comamndText的對象實際上是一種不好的做法。你不說你使用什麼樣的連接,但例如如果是ODBC,這將在內部發送假的無效SQL甲骨文來強制某種形式的清理。所以,相反,使用後丟棄你的Command對象,並創建一個新的。

重用Command對象是練習當您重新執行具有不同參數值的相同查詢時,但這不是這種情況。

+0

那麼類似的代碼怎麼來連接teradata呢? – logan 2012-07-26 04:10:40

+0

我試圖創建新的命令對象爲cmdSQLData1但仍然是相同的錯誤。 – logan 2012-07-26 04:13:38

+0

你可以發佈你的更新代碼,包括'Command'對象的初始化嗎?另外,你如何創建你的'連接'? – Dan 2012-07-26 15:32:58

0

你不需要在所有使用命令文本對於那些類型的查詢你可以做的是: -

`昏暗CON作爲新ADODB.Connection 昏暗RS作爲新ADODB.Recordset

con.Open "DSN=Oracle", "User", "Password" 
rs.Open "select * from table_a", con 

' Read all results 

rs.Close 

rs.Open "select * from table_b", con 
' Read all results 

rs.Close 

con.Close 

你只需要使用「命令」,如果你打算使用存儲過程或綁定參數的查詢。

相關問題