oracle - 在 ODP.NET(用户定义类型)中使用 Oracle UDT 时出现奇怪问题

标签 oracle odp.net user-defined-types

甲骨文 11g。

我在使用 UDT 时遇到了一个奇怪的问题,我有这 4 个模式:USER_1、USER_2、USER_A、USER_B。 USER_1 和 USER_2 都有一个 UDT(实际上是一个嵌套表):

CREATE OR REPLACE TYPE TAB_NUMBERS AS TABLE OF NUMBER(10)

USER_A 有一个同义词指向 USER_1 中的类型:

create or replace synonym TAB_NUMBERS for USER_1.TAB_NUMBERS;

USER_B 有一个同义词指向 USER_2 中的类型:

create or replace synonym TAB_NUMBERS for USER_2.TAB_NUMBERS;

USER_A 和 USER_B 都有一个使用同义词的过程:

CREATE OR REPLACE PROCEDURE proc_test (p1 in tab_numbers)
IS
BEGIN
  NULL;
END;

在 C# 代码中:

OracleConnection conn = new OracleConnection("data source=mh;user id=USER_A;password=...");
OracleCommand cmd = new OracleCommand();
cmd.Connection = conn;
cmd.CommandText = "proc_test";
cmd.CommandType = CommandType.StoredProcedure;
//
OracleParameter op = new OracleParameter();
op.ParameterName = "p1";
op.Direction = ParameterDirection.Input;
op.OracleDbType = OracleDbType.Object;
op.UdtTypeName = "TAB_NUMBERS";
Nested_Tab_Mapping_To_Object nt = new Nested_Tab_Mapping_To_Object();
nt.container = new decimal[] { 1, 2 };
op.Value = nt;
......

这段代码工作正常,但是当我将连接字符串从 USER_A 更改为 USER_B 时它会引发错误,错误说:

OCI-22303: type ""."TAB_NUMBERS" not found

有趣的是,如果我更改 op.UdtTypeName = "TAB_NUMBERS";到 op.UdtTypeName = "USER_2.TAB_NUMBERS",错误消失,一切正常。

有人知道吗?

提前致谢。

最佳答案

不能使用同义词指定自定义类型映射,无论映射是否通过 OracleCustomTypeMappingAttribute 对象或 XML 配置文件提供。

https://docs.oracle.com/cd/E11882_01/win.112/e23174/featUDTs.htm#ODPNT382

关于oracle - 在 ODP.NET(用户定义类型)中使用 Oracle UDT 时出现奇怪问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10811185/

相关文章:

mysql - 具有两个外键的表的 sql 到同一个表导致笛卡尔积

sql - 甲骨文 SQL : using bind variable for dates

java - 如何将 "Articles"示例的应用程序图标放在 Oracle WebCenter 站点的应用程序栏中

c# - odp.net 日期时间.MaxDate

oracle - 类型关键字。帮助我在 plsql 中解释这段代码?

sql - 创建一个以 SQL @tables 作为其成员的 UDT

.net - Oracle 尝试加载格式不正确的程序

c# - 打开oracle连接时,连接对象为空

oracle - OCIEnvCreate 失败,返回代码 -1,但错误消息文本在 ODP.net 中不可用

sql - Oracle SQL : using LAG function with user-defined-type returns "inconsistent datatypes"