Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 为什么Excel VBA不能查询带有@符号的表?_Sql_Vba_Excel - Fatal编程技术网

Sql 为什么Excel VBA不能查询带有@符号的表?

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 & _ "

我正在查询一个表,调用它history@integration.

查询表时,使用以下类型的查询:

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列也可以工作,然后从本地表中进行选择。例如,请参阅: