尝试使用 .NET Core 执行存储过程时出现“ORA-03115:不支持的网络数据类型或表示”

Posted

技术标签:

【中文标题】尝试使用 .NET Core 执行存储过程时出现“ORA-03115:不支持的网络数据类型或表示”【英文标题】:"ORA-03115: unsupported network datatype or representation" when trying to execute stored procedure with .NET Core 【发布时间】: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 参数的情况下调用存储过程,我也会遇到同样的异常。 好吧,猜错了:( 【参考方案1】:

我解决了我的问题!布尔参数p_DumpDebugMsgs 导致异常。 ODP 似乎不支持here 中描述的布尔参数。

因为参数p_DumpDebugMsgs有一个默认值,我最终没有为这个参数传递一个值。

【讨论】:

太棒了!请将您的答案标记为未来 SO 用户的“已接受答案”!

以上是关于尝试使用 .NET Core 执行存储过程时出现“ORA-03115:不支持的网络数据类型或表示”的主要内容,如果未能解决你的问题,请参考以下文章

尝试使用 .NET 5.0 Web 应用程序执行存储过程时出现转换错误

尝试执行存储过程时出现意外错误

Asp.Net 在运行存储过程时出现超时错误

[ASP.NET Core Web应用上使用个人用户帐户存储在应用程序中的Postman模拟登录时出现400错误请求错误

尝试对 ASP.NET Core 3.1 使用多个身份验证方案时出现异常

尝试使用 .Net Core 3.1 连接 mySAP WCF 时出现问题