如何解决“ 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 (将#修改为@)