Sql 为什么Excel VBA不能查询带有@符号的表?
我正在查询一个表,调用它history@integration. 查询表时,使用以下类型的查询:Sql 为什么Excel VBA不能查询带有@符号的表?,sql,vba,excel,Sql,Vba,Excel,我正在查询一个表,调用它history@integration. 查询表时,使用以下类型的查询: select * from history@integration where id=5 并获得预期的输出 使用excel,我通过以下方式连接到数据库: cn.Open ( _ "User ID=" & userID & _ ";Password=" & password & _ ";Data Source=" & datasource & _ "
select * from history@integration where id=5
并获得预期的输出
使用excel,我通过以下方式连接到数据库:
cn.Open ( _
"User ID=" & userID & _
";Password=" & password & _
";Data Source=" & datasource & _
";Provider=MSDAORA.1")
但我得到一个运行时错误,数据类型不受支持。我已经使用完全相同的连接进行了验证,我可以使用其他标准表(如select*from history)查询数据库。任何关于如何获得正确类型的想法。@是SQL中的保留字符。尝试用括号括住表名,如:[history@integration].在Oracle中,假设您使用的是这个,那么在您的问题中说明@通常用于表示数据库链接会很有帮助:很可能它不是表名的一部分,但表历史记录实际上位于另一个数据库中,该数据库由名为integration的DB链接链接
并非所有数据类型都可以通过Oracle DB link LOB类型进行选择,例如我尝试在其中插入括号,但得到的响应是无效的表名。当我正常查询并获得预期输出时,我不使用它们。只有在excel中,当我使用@符号时,我遇到了错误。我尝试了excel中的括号和通过Toad进行查询的正常方式,得到了相同的响应,无效的表名。这完全有意义。但是,您对我如何解决这个问题有什么想法吗?您想查询的表中有大型对象类型列吗?我认为解决此问题的唯一方法是在select from查询中运行insert,将记录复制到一个本地临时表中,该表即使使用LOB列也可以工作,然后从本地表中进行选择。例如,请参阅: