Oracle数据库查询抛出错误的第二次运行

Oracle数据库查询抛出错误的第二次运行

问题描述:

我已经在那里我打电话甲骨文检索使用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

你不会在任何地方看到这个记录,但是重用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

你不需要在所有使用命令文本对于那些类型的查询你可以做的是: -

`昏暗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 

你只需要使用“命令”,如果你打算使用存储过程或绑定参数的查询。