У меня возникают проблемы с получением данных с LONG-типом данных в моей базе данных Oracle. Прежде чем он работал нормально, когда конкретный столбец находится в типе VARCHAR2, но поскольку мне нужно больше места для хранения больших данных, я решил вместо этого использовать LONG.Получение длинного типа данных с использованием хранимых процедур в Oracle
Я извлечение данных с помощью хранимой процедуры, следующий код вызывает хранимую процедуру из C#:
internal static Issue GetIssueById(int issueId)
{
List<OracleParameter> p = new List<OracleParameter>();
// params
p.Add(new OracleParameter("p_IssueId", OracleDbType.Varchar2, issueId, ParameterDirection.Input));
p.Add(new OracleParameter("p_Cursor", OracleDbType.RefCursor, ParameterDirection.Output));
// perform get
using (DataTable dt = OracleDataAccessor.ExecuteDataTable(
ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString,
CommandType.StoredProcedure,
"sp_Issues_GetByIssueId",
p.ToArray()))
{
if (dt.Rows.Count < 1)
{
// could not get new id
throw new Exception("Could not find issue with Id: " + issueId);
}
else
{
// get new Issue
return new Issue(dt.Rows[0]);
}
}
И вот хранимая процедура:
create or replace
Procedure sp_Issues_GetByIssueId
(
p_IssueId IN Number,
p_Cursor OUT Sys_RefCursor
)
IS
BEGIN
OPEN p_Cursor FOR
SELECT * FROM Issues i
WHERE i.IssueId = p_IssueId;
END sp_Issues_GetByIssueId;
Я пытаюсь получить полную строку в таблице ISSUES с 15 столбцами с использованием issueId в качестве первичного ключа, и у меня возникают проблемы с получением столбца с типом данных LONG, чтобы быть конкретным, я не могу извлечь данные из него. Как я уже сказал, раньше, когда его тип был VARCHAR2, проблем не было, и код работал отлично. Я что-то пропустил здесь, или что-то не так с типом данных LONG? Если да, то какова возможная работа? Если возможно, я по-прежнему хочу использовать тип данных LONG вместо других типов.
Чтобы добавить, я использую Visual Studio 2008 и Oracle 11g.