在.NET中,是否可以从两个单独的Oracle数据库运行嵌套查询?
E.g。
“选择my_value, FROM table_in_database_1 WHERE my_value IN(选择my_value FROM table_in_database_2)“
如果是这样,我该怎么做呢?
最终,这是在条件列表中使用带有超过1000个项目的“in”语句来克服“ORA-01795”错误,而不必将查询分解为多个“OR值IN”列表。
答案 0 :(得分:1)
如果您无法建立数据库链接,您还可以在database_1中的临时表中插入SELECT my_value FROM table_in_database_2
的所有值,然后再进行连接。
答案 1 :(得分:1)
您可以通过简单地构建数据库链接并加入该链接来逃避,但这可能会导致性能问题。像这样:
在数据库1上建立数据库2的链接。
CREATE DATABASE LINK db2 CONNECT TO user IDENTIFIED BY pw USING tns-alias;
将数据库1上的表连接到数据库2上的表:
SELECT my_value
FROM table_in_database_1 t1 JOIN table_in_database_2@db2 t2
ON t1.my_value = t2.my_value
根据链接的性能,您可以选择使用混合方法,包括数据库链接和临时表。
如上构建数据库链接。在数据库1上构建一个临时表,该表包含要在数据库2的子查询中使用的值。
CREATE GLOBAL TEMPORARY TABLE db2_values (value VARCHAR2(20));
将值从db2复制到db1:
INSERT INTO db2_values
SELECT my_value
FROM table_in_database_2@db2;
最后,将数据库1表连接到临时表。
SELECT my_value
FROM table_in_database_1 t1 JOIN db2_values t2 ON t1.my_value = t2.value;
答案 2 :(得分:0)
是的 - 您可以查看数据库链接。