0

首先,我知道 LONG RAW 已被弃用/邪恶/糟糕/难以使用。我无法控制我的数据库架构。:)

我目前有一个从数据库中检索 LONG RAW 列并在客户端处理它的程序。这很好用,但我想做的是将此处理移动到服务器,这样我就不必在不同的客户端情况下将处理代码翻译成不同的语言。

所以我目前的查询只是

SELECT t.ID, t.POINTS
  FROM TBL_DATAPOINTS t
 WHERE ...etc

然后t.POINTS由客户端处理。

我试图将其移至 Oracle 过程,但我不知道如何将 LONG RAW 列转换为我可以使用的东西 - 最好是 VARCHAR2。如果将其检索到游标中,如何处理每一行,然后将游标与处理后的数据一起返回?

我不能内联:

OPEN curData FOR
  SELECT t.ID, t.POINTS, fnProcessData(t.POINTS)
    FROM TBL_DATAPOINTS t
   WHERE ...etc

由于将 LONG RAW 数据传递给函数的限制(我得到“非法使用 LONG 数据类型”)。

我在想也许我可以检索游标中的原始数据,然后遍历它并处理每一行,但我不知道如何(或是否)动态更改游标的结构。

4

1 回答 1

0

这取决于您需要做的处理。如您所见,使用 LONG RAW,您的功能非常有限。如果可行,您可以使用 TO_LOB() 函数将您的行存储在临时表中,您的值将作为 BLOB 列访问(检查 DBMS_LOB 包)。

于 2013-01-04T06:12:29.693 回答