У меня есть пакет Oracle, который успешно компилируется. Однако после смены пакета, когда я пытаюсь использовать этот пакет, я получаю сообщение об ошибке:
ORA-06508: PL/SQL: could not find program unit being called
Эта ошибка сохраняется до тех пор, пока я не перезапущу пул приложений IIS. Мое приложение создает новое соединение каждый раз, когда использует пакет, и после этого правильно закрывает соединение. Я пробовал установить Validate Connection=True; в строке подключения, но это не помогает.
Интересно, что проблема исчезает, когда я отключаю пул соединений, добавляя Pooling= Ложь; в строку подключения.
как решить эту проблему, не отключая пул соединений?
public void ExecuteProcedure(string precoureName, OracleConnection conn, object parameters, Dictionary output)
{
using (OracleConnection connmain = GetOracleConnection(conn))
{
OracleCommand cmd = new OracleCommand(precoureName, connmain) { CommandType = CommandType.StoredProcedure };
AddParametersToCommand(cmd, string.Empty, parameters, false);
List outparams = GetOutputParams(output, cmd);
cmd.ExecuteNonQuery();
for (int i = 0; i < outparams.Count; i++)
{
if (outparams.OracleDbType == OracleDbType.Clob)
{
output[outparams.ParameterName] = DBNull.Value;
if (outparams != null)
{
Oracle.ManagedDataAccess.Types.OracleClob res = (Oracle.ManagedDataAccess.Types.OracleClob)outparams.Value;
if (res != null && !res.IsNull)
{
output[outparams.ParameterName] = res.Value;
}
}
}
else
{
output[outparams.ParameterName] = outparams.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;
}
Подробнее здесь: https://stackoverflow.com/questions/643 ... called-wit
Как решить «ORA-06508: PL/SQL: не удалось найти вызываемый программный модуль» без перезапуска пула приложений IIS ⇐ C#
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение