ORA-02019 关于使用 Oracle.DataAccess.Client 来自 C# 的字符串连接 SQL
ORA-02019 on String Concatenation SQL from C# using Oracle.DataAccess.Client
我有一些代码可以根据多个值生成 SQL 查询。最终结果需要调用两个数据库来创建一个 DataTable
。第二个数据库由我们一直使用的数据库 link 连接。 C# 本身是可靠的,最终结果查询字符串是这样的:
SELECT distinct HOME.MISC.PROCEDURE(H.WIDGET, H.FIDGET),
H.WIDGET ,
(SELECT WIDGETYPE
FROM VISITOR.SOMETABLE@DEVSERV --here is where it all goes bad, bad bad.
WHERE UPPER(WIDGET_SN) = UPPER(H.WIDGET)
) ,
H.FIDGET,
HOME.STUFF.ANOTHERPROCEDURE(H.WIDGET)
FROM HOME.WIDGET_HEAP H
INNER JOIN HOME.WIDGET_LIST L
ON H.WIDGET = L.WIDGET_ID
WHERE UPPER(L.WIDGET_ID ) = UPPER('1337-H4X')
显然这些不是真实的字段名称或值,但您明白了。当我在断点处从变量本身解除查询时,我可以将 SQL 粘贴到 SQL Developer 中,它工作得很好。当我 运行 查询并尝试在我的程序中填充我的 DataTable
时,我得到:
ORA-02019: connection description for remote database not found;
username/TNS/etc 等都已正确设置,因为我们有许多程序使用相同的信息来建立连接。我在使用 link 时做错了什么吗?我搜索了 Google 和此处,发现了很多关于该错误的参考资料,但没有像这种情况。
既然你可以在 SQLDeveloper 中 运行 它就好了,这听起来像是 db_link 可见性的问题。 link 是 public 数据库 link 吗?如果是这样,所有用户都可以访问。如果没有,那么只有您登录到 SQLDeveloper 的用户才能访问它。如果是这种情况,应用程序用户是否是同一用户?如果不是,则它无权访问它。关键在错误描述,connection description not found。确保您的应用可以看到此 link.
我有一些代码可以根据多个值生成 SQL 查询。最终结果需要调用两个数据库来创建一个 DataTable
。第二个数据库由我们一直使用的数据库 link 连接。 C# 本身是可靠的,最终结果查询字符串是这样的:
SELECT distinct HOME.MISC.PROCEDURE(H.WIDGET, H.FIDGET),
H.WIDGET ,
(SELECT WIDGETYPE
FROM VISITOR.SOMETABLE@DEVSERV --here is where it all goes bad, bad bad.
WHERE UPPER(WIDGET_SN) = UPPER(H.WIDGET)
) ,
H.FIDGET,
HOME.STUFF.ANOTHERPROCEDURE(H.WIDGET)
FROM HOME.WIDGET_HEAP H
INNER JOIN HOME.WIDGET_LIST L
ON H.WIDGET = L.WIDGET_ID
WHERE UPPER(L.WIDGET_ID ) = UPPER('1337-H4X')
显然这些不是真实的字段名称或值,但您明白了。当我在断点处从变量本身解除查询时,我可以将 SQL 粘贴到 SQL Developer 中,它工作得很好。当我 运行 查询并尝试在我的程序中填充我的 DataTable
时,我得到:
ORA-02019: connection description for remote database not found;
username/TNS/etc 等都已正确设置,因为我们有许多程序使用相同的信息来建立连接。我在使用 link 时做错了什么吗?我搜索了 Google 和此处,发现了很多关于该错误的参考资料,但没有像这种情况。
既然你可以在 SQLDeveloper 中 运行 它就好了,这听起来像是 db_link 可见性的问题。 link 是 public 数据库 link 吗?如果是这样,所有用户都可以访问。如果没有,那么只有您登录到 SQLDeveloper 的用户才能访问它。如果是这种情况,应用程序用户是否是同一用户?如果不是,则它无权访问它。关键在错误描述,connection description not found。确保您的应用可以看到此 link.