gpt4 book ai didi

oracle - 非法使用 LONG 数据类型 Oracle

转载 作者:行者123 更新时间:2023-12-01 15:14:06 25 4
gpt4 key购买 nike

这是我的第一个问题

我在尝试将表列(long raw)转换为 base 64 字符串时遇到问题,此列包含一些员工图片。

这是查询,我要转换的字段是f.fot_empl:

SELECT e.NOM_EMPL First_name,
APE_EMPL Last_name,
e.NOM_EMPL || ' ' || e.APE_EMPL Full_name,
car.NOM_CARG position,
COS.NOM_CCOS Area,
f.fot_empl Picture,
E.FEC_NACI Birth_date
FROM EMPLE e
INNER JOIN CONTR c
ON E.COD_EMPL = C.COD_EMPL
INNER JOIN cargo car
ON C.COD_CARG = CAR.COD_CARG
INNER JOIN CCOST cos
on COS.COD_CCOS = C.COD_CCOS
LEFT JOIN FOEMP f -- employee picture
ON e.cod_empl = F.COD_EMPL
WHERE C.IND_ACTI = 'A';

我尝试过的:

这篇文章的接受答案没有结果,我不断收到“非法使用 LONG 数据类型”错误。 Workaround for ORA-00997: illegal use of LONG datatype

我尝试实现以下功能但没有结果:

CREATE OR REPLACE FUNCTION to_base64 (
vcodem IN FOEMP.COD_EMPR%TYPE,
vcodempl IN FOEMP.COD_EMPL%TYPE)
RETURN VARCHAR2
IS
V_VAR FOEMP.FOT_EMPL%TYPE;
V_result VARCHAR2 (4000);
BEGIN
DBMS_OUTPUT.put_line ('Start');
SELECT UTL_RAW.cast_to_varchar2 (
UTL_ENCODE.base64_encode (
UTL_RAW.cast_to_raw (DBMS_LOB.SUBSTR (f.FOT_EMPL, 4000))))
INTO V_result
FROM FOEMP f
WHERE COD_EMPL = vcodempl AND COD_EMPR = vcodem;
DBMS_OUTPUT.put_line ('End');
DBMS_OUTPUT.put_line ('Result: ' || V_result);
END to_base64;
/

由于 ORA-00997,函数无效:

   SELECT UTL_RAW.cast_to_varchar2 (
UTL_ENCODE.base64_encode (
UTL_RAW.cast_to_raw (DBMS_LOB.SUBSTR (f.FOT_EMPL, 4000))))
INTO V_result
FROM FOEMP f
WHERE COD_EMPL = vcodempl AND COD_EMPR = vcodem;

非常感谢。

最佳答案

您可以将 LONG RAW 值转换为 PL/SQL block 中的 BLOB,然后对其进行 base64 编码:

CREATE OR REPLACE FUNCTION to_base64 (
vcodem IN FOEMP.COD_EMPR%TYPE,
vcodempl IN FOEMP.COD_EMPL%TYPE)
RETURN VARCHAR2
IS
l_blob BLOB;
l_long_raw LONG RAW;
BEGIN
SELECT fot_empl INTO l_long_raw
FROM foemp
WHERE COD_EMPL = vcodempl AND COD_EMPR = vcodem;
l_blob := TO_BLOB(l_long_raw);
RETURN UTL_RAW.cast_to_varchar2 (UTL_ENCODE.base64_encode (l_blob));
END;
/

当然,strongly recommends that you convert LONG RAW columns to binary LOB (BLOB) columns ;现在仍然将数据存储为 LONG 或 LONG 原始数据似乎相当过时。

关于oracle - 非法使用 LONG 数据类型 Oracle,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29853945/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com