首先,我知道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数据类型')。
我想也许我可以检索光标中的原始数据,然后遍历它并处理每一行,但我不知道如何(或是否)动态更改光标的结构。
答案 0 :(得分:0)
这取决于您需要做的处理。有了LONG RAW,你可以看到非常有限。 如果可行,您可以使用TO_LOB()函数将行存储在临时表中,其中您的值将作为BLOB列访问(检查DBMS_LOB包)。