0
我在使用Oracle數據庫中的LONG數據類型檢索數據時遇到問題。在特定列處於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。