Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Oracle »

Intentar hacer esto. Transformar

Estas en el tema de Intentar hacer esto. Transformar en el foro de Oracle en Foros del Web. Hola: Quiero hacer esto. El campo codigopostal de la tabla system.PROVINCIAS, se debe de extraer como tipo numérico, por lo que será necesario una transformación ...
  #1 (permalink)  
Antiguo 26/05/2016, 04:45
 
Fecha de Ingreso: mayo-2007
Ubicación: PIC-16F84A
Mensajes: 727
Antigüedad: 17 años
Puntos: 8
Intentar hacer esto. Transformar

Hola:

Quiero hacer esto.
El campo codigopostal de la tabla system.PROVINCIAS, se debe de extraer como tipo numérico,
por lo que será necesario una transformación de las provincias cuyo código postal empiece por
‘0’.

He hecho este primer código.
Código SQL:
Ver original
  1. SET serveroutput ON
  2.  
  3. -- Crear o reemplazar directorio.
  4. CREATE OR REPLACE DIRECTORY directorio AS '/home/usuario';
  5.  
  6. -- Dar permiso directorio.
  7. -- GRANT read, write ON DIRECTORY directorio to usuario;
  8.  
  9. -- Escritura del fichero.
  10. DECLARE
  11.         Linea VARCHAR2(10000);
  12.         v_archivo UTL_FILE.FILE_TYPE;
  13.  
  14. BEGIN
  15.         DBMS_OUTPUT.PUT_LINE('Creando archivo...');
  16.         v_archivo := UTL_FILE.FOPEN('DIRECTORIO914', 'PROVINCIAS.dat', 'w');
  17.         DBMS_OUTPUT.PUT_LINE('Archivo creado.');
  18.  
  19.         DBMS_OUTPUT.PUT_LINE('Leyendo la tabla y escribiendo en el archivo...');
  20.         FOR COLUMNA IN (SELECT * FROM SYSTEM.PROVINCIAS) LOOP
  21.         Linea := COLUMNA.PROVINCIA || '|' || COLUMNA.CODIGOPOSTAL || '|' || COLUMNA.DESCRIPCION || '|' || COLUMNA.ZONA;
  22.  
  23.         UTL_FILE.PUT_LINE(v_archivo, Linea);
  24.  
  25.         END LOOP;
  26.  
  27.         DBMS_OUTPUT.PUT_LINE('Archivo cerrado.');
  28.         DBMS_OUTPUT.PUT_LINE('------ FIN DE IMPRESION ------');
  29.  
  30.         UTL_FILE.FCLOSE(v_archivo);
  31.  
  32.         EXCEPTION
  33.                 WHEN OTHERS THEN
  34.                         DBMS_OUTPUT.PUT_LINE(SQLERRM);
  35. END;
  36. /

Lo que hace arriba es leer tabla que está en system.PROVINCIAS, crear un archivo llamado PROVINCIA.dat y guardar la información de la tabla en dicho archivo.

Solo me falta lo indicado arriba.

Saludos.
__________________
Meta Shell, VERSIÓN 1.2.2
Descargar
  #2 (permalink)  
Antiguo 26/05/2016, 08:38
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 3 meses
Puntos: 360
Respuesta: Intentar hacer esto. Transformar

Creo que basta con castear a numerico el valor de codigoPOSTAL en esta linea:

Código SQL:
Ver original
  1. Linea := COLUMNA.PROVINCIA || '|' || COLUMNA.CODIGOPOSTAL || '|' || COLUMNA.DESCRIPCION || '|' || COLUMNA.ZONA;

Cambiala por:

Código SQL:
Ver original
  1. Linea := COLUMNA.PROVINCIA || '|' || TO_NUMBER(COLUMNA.CODIGOPOSTAL) || '|' || COLUMNA.DESCRIPCION || '|' || COLUMNA.ZONA;
__________________
Without data, You are another person with an opinion.
W. Edwads Deming

Etiquetas: create, tabla, transformar
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 18:08.