问题描述
每次成功编译后的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 (将#修改为@)