【问题标题】:Retrieving Long Data Type using Stored Procedures in Oracle在 Oracle 中使用存储过程检索长数据类型
【发布时间】:2013-10-11 06:28:19
【问题描述】:

在我的 Oracle 数据库中检索 LONG 数据类型的数据时遇到问题。在特定列为 VARCHAR2 类型时它工作正常之前,但由于我需要更多空间来存储更大的数据,我决定改用 LONG 类型。

我正在使用存储过程检索数据,以下代码从 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;

我正在尝试使用 issueId 作为主键在 ISSUES 表中获取包含 15 列的完整行,并且在检索具有 LONG 数据类型的列时遇到问题,具体而言,我无法从它。就像我说的,在它的类型是 VARCHAR2 之前,没有任何问题,并且代码运行良好。我在这里遗漏了什么,还是 LONG 数据类型有问题?如果是这样,可能的解决方法是什么?如果可能,我仍然想使用 LONG 数据类型而不是其他类型。

补充一下,我使用的是 Visual Studio 2008 和 Oracle 11g。

【问题讨论】:

    标签: visual-studio-2008 stored-procedures oracle11g


    【解决方案1】:

    LONG 自 8.1.5 天以来已被弃用,并且有许多限制。应该不惜一切代价避免LONG

    如果要存储超过 4,000 字节(12c 中为 32,000 字节)的文本数据,则需要使用 CLOB,而不是 LONG

    【讨论】:

      猜你喜欢
      • 2018-10-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-05-05
      • 2018-05-15
      • 1970-01-01
      • 1970-01-01
      • 2015-09-21
      相关资源
      最近更新 更多