how to resolve "ORA-06508: PL/SQL: could not find program unit being called" without recycle IIS application pool

Viewed 1406

Oracle package after successful compiling every time gives error "ORA-06508: PL/SQL: could not find program unit being called" until recycling IIS application pool. Application every time creating new connection to use this package and disposing,closing successful. Also tried "Validate Connection=True;Pooling=False;" in connection string, but not helps.

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;
    }
0 Answers
Related