Oracle - igualar el contenido de una columna, en otra columna, pero de otra tabla

 
Vista:
sin imagen de perfil

igualar el contenido de una columna, en otra columna, pero de otra tabla

Publicado por carlino70 (6 intervenciones) el 19/04/2013 18:20:29
Hola, estoy realizando esta manipulacion de un campo, de una tabla en Oracle 11g:

1
2
3
SELECT (substr ('PUN_26_AL_REA  P',1,
INSTR( 'PUN_26_AL_REA  P',' ')-1)) AS PRUEBA
FROM DUAL;


Es para igualar el contenido de una columna, con la de otra columna de otra tabla.

Ahora necesito aplicar las mismas funciones, a un rango de campos de una tabla.

Supongo que es algo asi:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
declare
    cursor c_cur
    is
    select pointname from desde_ap;
 
    v_cur c_cur%ROWTYPE;
    --v_convert INTEGER;
 
    BEGIN
    v_sql:= ''
        OPEN C_CUR;
 
            loop
            FETCH C_CUR INTO V_CUR;
            EXIT WHEN c_cur%NOTFOUND;
                select (substr ('|| v_cur ||',1,
                INSTR( '|| v_cur ||',' ')-1)) FROM dual;
            end loop;
            DBMS_OUTPUT.PUT_LINE(v_cur.pointname);
 
        close c_cur;
    end;



pero no me funciona.

Podra ayudarme por favor?

Gracias!
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil

igualar el contenido de una columna, en otra columna, pero de otra tabla

Publicado por ulises (39 intervenciones) el 07/05/2013 08:50:56
Te da algun mensaje de error?

no veo en donde realizas la comparacion de los campos.

La consulta que esta dentrodel ciclo no se asigna a ninguna variable
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

igualar el contenido de una columna, en otra columna, pero de otra tabla

Publicado por Alixandro (63 intervenciones) el 13/05/2013 16:25:59
Señor Carlino70, por tu inquietud, voy a suponer que estas buscando extraer parte de un valor que esta contenido en un campo. esta funcion se adapta a los que buscar, ademas te puede ser utili en otras cosas mas. como separar nombres y apellidos, cadena concatenada, caracter contenido en una cadena, etc. puedes crearindividual o agregar a tu package. este codigo lo encontre escudriñando en la web y me ha servido de mucho, incluso hasta para migrar datos.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
Function Split (p_cadena     in varchar2,
                p_simbolo    in char,
                p_ocurrencia in number default 1) return varchar2 Is
--
v_txt     varchar2(200);
v_pos_ini integer := 0;
v_pos_fi  integer;
--
Begin
  -- Funcion que separa cadenas de texto (p_cadena) por el simbolo p_simbolo
  -- Devuelve la ocurrencia p_ocurrencia, Devuelve null si la ocurrencia no existe
  -- Devuelve el simbolo p_simbolo si no hay ningun caracter entre dos
  --ocurrencias de p_simbolo
  if p_ocurrencia > 1 then
    v_pos_ini := instr (str1 => p_cadena,
                        str2 => p_simbolo,
                        pos  => 1,
                        nth  => p_ocurrencia - 1);
  end if;
  --
  v_pos_fi := instr (str1 => p_cadena,       -- test string
                     str2 => p_simbolo,      -- string to locate
                     pos  => 1,              -- position
                     nth  => p_ocurrencia);  -- occurrence number
  --
  if v_pos_ini = v_pos_fi then
    if p_ocurrencia = 1 then
      v_txt := substr (str1 => p_cadena, pos => 1);
    end if;
  elsif v_pos_ini > v_pos_fi then
    v_txt := substr (str1 => p_cadena, pos => v_pos_ini + 1);
  elsif v_pos_fi = v_pos_ini + 1 then
    v_txt := p_simbolo;
  else
    v_txt := substr (str1 => p_cadena, pos => v_pos_ini + 1,
                     len  => (v_pos_fi - v_pos_ini) - 1);
  end if;
  --
  return v_txt;
End Split;


Como funciona:

1- CLARINO70, WEBDELPROGRAMADOR (requiere extraer clarino70)
Select Split('CLARINO70,WEBDELPROGRAMADOR',',',1) as xxxx From dual;

1- CLARINO70, WEBDELPROGRAMADOR (requiere extraer WEBDELPROGRAMADOR)
Select Split('CLARINO70,WEBDELPROGRAMADOR',',',2) as xxxx From dual;
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil

igualar el contenido de una columna, en otra columna, pero de otra tabla

Publicado por carlino70 (6 intervenciones) el 13/05/2013 18:59:08
Excelente respuesta, lo que necesitaba.

Muchas gracias!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar