sql >> Base de Datos >  >> RDS >> Oracle

Convertir LONG a varchar en Oracle

Buscando en Google oracle convert long to varchar da bastantes resultados, muchos de los cuales sugieren el uso de funciones, tablas (temporales), etc. Todos estos están fuera de cuestión en mi caso específico, ya que no tengo permitido crear ningún objeto en Oracle base de datos/servidor.

Finalmente encontré una muestra que pude modificar para mi caso de uso. La muestra es de este página , por alguien que se hace llamar Sayan Malakshinov. Después de modificar su muestra, terminé con esto:

select * from openquery(SERVERLINKNAME, '
    select *
    from
    xmltable( ''/ROWSET/ROW'' passing dbms_xmlgen.getXMLType(''
        select
            trigger_name,
            TRIGGER_BODY
        from ALL_TRIGGERS
        where TRIGGER_BODY is not null
            and owner = ''''OURUSERNAME''''
    '')
    columns
        trigger_name varchar2(80),
        TRIGGER_BODY varchar2(4000)
    )
')

Esto omite algunas columnas de ALL_TRIGGERS pero obtengo todo el cuerpo del disparador (ya que ninguno de los disparadores tiene más de 4000 caracteres).