微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何解决“ ORA-06508:PL / SQL:找不到正在被调用的程序单元”而不回收IIS应用程序池

如何解决如何解决“ ORA-06508:PL / SQL:找不到正在被调用的程序单元”而不回收IIS应用程序池

每次成功编译后的Oracle软件包都会给出错误“ ORA-06508:PL / sql:找不到被调用的程序单元” ,直到回收IIS应用程序池为止。每次创建新连接的应用程序都会使用此软件包进行配置和关闭,成功。还尝试在连接字符串中尝试“ Validate Connection = True; Pooling = False;” ,但无济于事。

public void ExecuteProcedure(string precoureName,OracleConnection conn,object parameters,Dictionary<string,object> output)
    {
        using (OracleConnection connmain = GetoracleConnection(conn))
        {
            OracleCommand cmd = new OracleCommand(precoureName,connmain) { CommandType = CommandType.StoredProcedure };
            AddParametersToCommand(cmd,string.Empty,parameters,false);

            List<OracleParameter> outparams = GetoutputParams(output,cmd);
            cmd.ExecuteNonQuery();

            for (int i = 0; i < outparams.Count; i++)
            {
                if (outparams[i].OracleDbType == OracleDbType.Clob)
                {
                    output[outparams[i].ParameterName] = dbnull.Value;
                    if (outparams[i] != null)
                    {
                        Oracle.ManagedDataAccess.Types.OracleClob res = (Oracle.ManagedDataAccess.Types.OracleClob)outparams[i].Value;
                        if (res != null && !res.IsNull)
                        {
                            output[outparams[i].ParameterName] = res.Value;

                        }
                    }
                }
                else
                {
                    output[outparams[i].ParameterName] = outparams[i].Value;

                }
            }

            CloSEOracleConnection(conn,connmain);
        }
    }

private void CloSEOracleConnection(OracleConnection conn,OracleConnection connmain)
    {
        if (conn == null && connmain.State != ConnectionState.Closed)
        {
            if (AutoClearPool)
            {
                OracleConnection.ClearPool(connmain);
            }
            connmain.Close();
        }
    }

    private OracleConnection GetoracleConnection(OracleConnection conn)
    {
        OracleConnection connmain;
        if (conn == null)
        {
            connmain = new OracleConnection(ConnectionString); connmain.open();
        }
        else { connmain = conn; }

        return connmain;
    }

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。