我正在尝试在 Oracle 中跨远程数据库执行 SET 操作。我正在使用 MINUS 运算符。
我的查询看起来像这样。
SELECT NAME FROM localdb MINUS SELECT NAME from remotedb@dblink
这引发了 ORA-12704 错误。我理解这需要某种转换或 NLS 设置。
接下来我应该尝试什么?
我正在尝试在 Oracle 中跨远程数据库执行 SET 操作。我正在使用 MINUS 运算符。
我的查询看起来像这样。
SELECT NAME FROM localdb MINUS SELECT NAME from remotedb@dblink
这引发了 ORA-12704 错误。我理解这需要某种转换或 NLS 设置。
接下来我应该尝试什么?
这两name
列存储在不同的字符集中。这可能是因为它们的类型定义,也可能是因为两个数据库使用不同的字符集。
您可以通过将远程数据库中的字段显式转换为本地数据库的字符集来解决此问题。试试这个:
SELECT NAME FROM localdb MINUS SELECT TO_CHAR(NAME) from remotedb@dblink
它接缝了这两个表中的 NAME 列的类型是不同的。
确保 remotedb 表中的 NAME 列与 localdb 表中的 NAME类型完全相同。当您使用 MINUS 运算符时,它是强制性的。