【发布时间】:2021-03-03 21:25:45
【问题描述】:
我正在使用 Oracle 11g 数据库。当我尝试使用 .NET Core 和 Oracle.ManagedDataAccess.Core 执行存储过程时,我得到了这个异常:
ORA-03115:不支持的网络数据类型或表示”来自源“Oracle Data Provider for .NET, Managed Driver
这是我的 C# 代码:
using (OracleCommand command = new OracleCommand("procedureName", conn))
{
command.CommandType = CommandType.StoredProcedure;
command.Parameters.Add(new OracleParameter("p_system", OracleDbType.Varchar2, "SystemName", ParameterDirection.Input));
command.Parameters.Add(new OracleParameter("p_filename", OracleDbType.Varchar2, "fileName.xml", ParameterDirection.Input));
command.Parameters.Add(new OracleParameter("p_document", OracleDbType.Clob, "document", ParameterDirection.Input));
OracleParameter errorParameter = new OracleParameter("p_error", OracleDbType.Int32, ParameterDirection.Output);
command.Parameters.Add(errorParameter);
command.Parameters.Add(new OracleParameter("p_DumpDebugMsgs", OracleDbType.Boolean, true, ParameterDirection.Input));
command.ExecuteNonQuery();
}
这是我要执行的存储过程:
procedure procedureName(
p_system IN VARCHAR2,
p_filename IN VARCHAR2,
p_document IN CLOB,
p_error OUT NUMBER,
p_DumpDebugMsgs IN BOOLEAN DEFAULT FALSE
)
任何帮助表示赞赏:)
【问题讨论】:
-
只是为了检查:您可以尝试您的示例并删除存储过程和 C# 代码中的 CLOB 参数吗?问题可能出在 CLOB 实现上。
-
为测试创建另一个过程(您可以将
null;放在正文中)。 IE :create or replace procedure procedureNameTest(p_system IN VARCHAR2, p_filename IN VARCHAR2, p_error OUT NUMBER, p_DumpDebugMsgs IN BOOLEAN DEFAULT FALSE ) as BEGIN NULL; END; /然后你可以放弃它DROP PROCEDURE procedureNameTest; -
CLOB 实现似乎不是问题。因为如果我在没有 CLOB 参数的情况下调用存储过程,我也会遇到同样的异常。
-
好吧,猜错了:(
标签: oracle asp.net-core stored-procedures oracle11g