我有一个关于根据字符长度将字符串消息分成三部分的问题。原因是我的存储过程不会超过 32767 个字符。(pl/sql 有效负载)因此,我想向存储过程发送三个消息(三个 clob),该存储过程可以附加这些消息并将其发送到队列。
如果我有一个最好的解决方案,string message
并且我需要将它计算为三个部分,其中消息的最大长度可以是 32.000 个字符?
存储过程需要什么:(qname IN varchar2, i_clob1 IN clob, i_clob2 IN clob, i_clob3 IN clob)
如果string message
第一部分少于 32.000 个字符,如何分三部分发送,但我还是想分三部分发送?
这是我的代码,它接收一条消息(i_clob)。
public void Enqueue(string queueName, string mess)
{
OracleCommand cmd = null;
try
{
cmd = new OracleCommand("", m_Connection)
{
CommandText = m_InSpName,
CommandType = CommandType.StoredProcedure
};
//add Aq queue name
OracleParameter qName = new OracleParameter("qname", OracleType.VarChar)
{
Direction = ParameterDirection.Input,
Value = queueName
};
//add message to enqueue
OracleParameter message = new OracleParameter("i_clob", OracleType.Clob)
{
Direction = ParameterDirection.Input
};
mess = mess.Replace("<?xml version=\"1.0\" encoding=\"utf-16\"?>", "");
message.Value = mess;
cmd.Parameters.Add(qName);
cmd.Parameters.Add(message);
cmd.ExecuteNonQuery();
}
catch (Exception ex)
{
//rethrow exception and make sure we clean up i.e. execute finally below
throw new Exception("An error occurred trying to deliver the message to the queue", ex);
}
finally
{
if (cmd != null)
{
cmd.Dispose();
}
}
}