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

2019-09-20 05:01发布

我已经在那里我打电话甲骨文检索使用ODBC数据两倍的VBA代码。 首先数据检索的罚款。 但是,第二次则说,

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

我的代码如下,

注:相同的代码工作,用于连接Teradata的,但没有当我使用Oracle

'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目录已经测试。 请告诉我

Answer 1:

你不会看到这个记录太多的任何地方,但重复使用Command与不同对象comamndText实际上是一种不好的做法。 你不说你使用什么样的连接,但例如如果是ODBC,这将在内部发送假的无效SQL甲骨文来强制某种形式的清理。 因此,相反,扔掉你的Command对象使用后,并创建一个新的。

重用Command对象是当你重新执行与不同的参数值相同的查询一个很好的做法,但这里并非如此。



Answer 2:

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

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

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



文章来源: Oracle database query throws error on second run