如何解决如何解决“ 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 举报,一经查实,本站将立刻删除。