Mi pregunta es referente a Oracle. Resulta que necesito aignar a un campo un tipo de datos de 4096 caracteres (tiene que ser exactamente ese tamaño para cumplir un estándar) pero en Oracle por lo que se el tamaño máximo es de 4000 caracteres, mi pregunta es: ¿Cómo puedo asignar ese tamaño concreto?
1 Respuesta
Respuesta de pedrito12
1
1
pedrito12, Actualmente estoy trabajando como Manager en una multinacional de...
Pues si, efectivamente en Oracle, el campo Long solo admite una longitud de 4000 caracteres; pero claro, la necesidad de implementar un campo con más longitud ya surgió hace muchos años, a lo que Oracle puso solución con un campo llamado LOB (BLOB, CLOB) y existen algunos más, pero nos centraremos en LOB. (Long binary object). En este tipo de campos se puede insertar todo tipo de objetos, bien sean caracteres, imágenes, video, audio, etc... Oracle lo tratará en binario. El tratamiento de este tipo de datos difiere bastante del tratado en los demás campos, es tun tanto especial. BLOB: Binary Lob. <= 4gb CLOB: Character Lob. <= 4gb. NCLOB:National Character LOB. Multibyte. BFILE:Fichero binario.guardado en S.O no en la B.D. Para crear la tabla, simplemente especificas el tipo de dato que te interese y punto, ej: Create table test_lobs ( c1 number, c2 clob, c3 bfile, c4 blob ) LOB (c2) STORE AS (ENABLE STORAGE IN ROW) LOB (c4) STORE AS (DISABLE STORAGE IN ROW) / Ejemplo de inserción: insert into test_lobs values (3,'Some data for record 3.', BFILENAME(null,null), '48656C6C6F'||UTL_RAW.CAST_TO_RAW(' there!')) / Ejemplo de Selección: select * from test_lobs / --Si hacemos esto, nos llenará el buffer de pantalla, tendremos que truncar la salida. Column c2 format a60 wrap select c1, c2 from test_lobs / C1 C2 ------------ -------------------------------------------------- -- 1 -- 2 -- 3 Some data for record 3. Evidentemente tambien se puede tratar este tipo de datos dentro de cuerpos PL, Procedimientos, etc... Te recomiendo que para empezar a usar este tipo de datos, accedas a Metalink, la web de Oracle: http://metalink.oracle.com Y hagas una búsqueda por "LOB", para mayor informacion; aquí verás mil explicaciones, ampliaciones, y usos distintos de este tipo de datos. Así mismo te recomiendo que cuando tengas que usar un tipo de datos que no te quepa en un varchar, recurras directamente a LOB, por la siguiente razón: Los campos Long son muy difíciles de administrar, ya que no dejan manipular la tabla libremente, por ejemplo para desfragmentar una tabla que tenga un campo Long, tendremos que hacer un export y un import, tampoco se pueden hacer renames, y algunas operaciones más, cotidianas en la administración de la b.d. Espero te haya sido de ayuda. PD: Para administrar LOBS tendrás que leer el libro de Oracle: Oracle8 ConText Cartridge, el cual explica accesos por índice a este tipo de datos y distintas maneras de manipulación. Este tipo de datos es muy usado en b.d que hagan accesos a datos por consultas muy pesadas y abiertas, es decir, consultas que accedan por muchas ocurrencias a la vez, o ocurrencias muy largas como búsqueda de personas o por ejemplo un nombre de un artista o disco, etc...