Oracle - asignar select a variable

 
Vista:

asignar select a variable

Publicado por tod (3 intervenciones) el 02/09/2015 17:23:21
Estimados,
Tengo el siguiente dilema; Necesito asignar el retorno de un select a una variable para luego insertarla en BD, pero hasta el momento ha sido un parto(desde mi perspectiva como novato) , he probado con cursores metiendolo dentro de variables, pero me devuelve 'tipos de dato inconsistentes' o 'la tabla está mutando, puede que el disparador/la función no puedan verla'

ejem

1
2
3
var :=(Select ID from tabla)
 
insert into tabla values (var)

PD: el select retorna solamente un valor

Gracias
Saludos
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
Val: 499
Oro
Ha mantenido su posición en Oracle (en relación al último mes)
Gráfica de Oracle

asignar select a variable

Publicado por Rafael (328 intervenciones) el 03/09/2015 10:11:22
Pero a ver chico..

Quieres tomar un valor (el ID) de la tabla "TABLA" para insertarlo nuevamente en la Tabla "TABLA"???
Me suena muy raro ...

Has probado con esto:
1
2
insert into tabla (id)
Select ID from tabla;

Tambien podrias hacer algo como:
1
2
3
4
5
6
7
8
DECLARE variableID int; -- El tipo de dato a contener
BEGIN
    Select ID
    INTO variableID
    from tabla;
 
    Insert into tabla (id) values (variableID);
END;

Espero alguna te sirva pero de que es raro es raro.

Saludos
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

asignar select a variable

Publicado por Luis (235 intervenciones) el 03/09/2015 21:41:10
Hola TOD,

Segun tu caso creo que estas tratando de crear un nuevo ID de registro para el siguiente registro que quieres insertar, esto lo puedes hacer asi:


1
2
3
4
5
6
7
8
9
10
11
12
13
declare
  NroId  number;
begin
 
  select  nvl( max(id),0)+1
  into  NroId
 from tabla_destino;
 
   insert into tabla_destino(id, campo1, campo2, campo3)
   values (NroId, 'aaa', 'bbb', 'ccc');
 
  commit;
end;
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

asignar select a variable

Publicado por tod (3 intervenciones) el 04/09/2015 15:05:04
Estimados Muchas gracias por su respuesta ,pero ya solucione el problema y sobre lo que dice Rafael si esta rara la cosa, pero es un sistema que existe desde 2004 y se le hace manutenciones solamente.

la solucione fue la siguiente

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
--creo una variable de tipo varchar
var_cod varchar(80);
 
--creo un cursor llamado c1 en el cual agrego el resultado de mi consulta
 CURSOR c1 IS SELECT CODIGO_CORRELATIVO FROM TABLAX;
 
-- recorro el cursor llamado c1 y le asigno el alias cursor
 FOR cursor in c1
   LOOP
--a la variable var_cod le asigno el valor que esta en el cursor (nombreCursor.nombreColumnaDelSelect)
      var_cod :=cursor.CODIGO_CORRELATIVO;
   END LOOP;
 
--en el insert pongo la variable que contiene ese valor
INSERT INTO TABLAD VALUES (var_cod)

eso, ojala ayude a alguien mas en el futuro
Saludos
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