Pregunta: | 26532 - PROBLEMA CON EL TIPO LONG DE ORACLE EN ACCESS |
Autor: | Hector Barron |
Estoy realizando consultas Access pass-througth de una base de datos Oracle 8.i.
Necesito tomar una subcadena de un campo de tipo Long (Este tipo es propio de Oracle). Pero no existe una funcion para tomar subcadenas de Long y las funciones como substr no pueden accesar este tipo de Datos. Como puedo realizar este tipo de consultas?? |
Respuesta: | Werner Garcia |
Como los LONGS y BLOBS no pueden usarse adentro de las funciones, hay que convertir estos campos a VARCHAR o VARCHAR2, pero VARCHAR2 solo soporta 4000 caracteres.
Yo hice un procedimiento llamado "to_string" que convierte los primeros 4000 caracteres de un LONG a VARCHAR2. Por ejemplo, si quiero obtener el titulo de una noticia solo si el cuerpo contiene la palabra 'computadora', llamo al procedimiento de esta forma: select titulo from noticias where to_string(codigonoticia) like '%computadora'; El parametro es el codigo unico de la noticia. La estructura de mi tabla noticias es como sigue: codigonoticia number(10) titulo varchar2(100) cuerpo long este procedimiento tiene que crearse en Oracle -------------------- cortar aqui ---------------------------- FUNCTION to_string(cod IN NUMBER) RETURN VARCHAR2 IS v_cuerpo VARCHAR2(4000); l_cuerpo LONG; BEGIN SELECT cuerponoticia INTO l_cuerpo FROM noticias WHERE codigonoticia = cod; v_cuerpo := SUBSTR(l_cuerpo, 1, 4000); RETURN(v_cuerpo); END; |