trabajar con variables

david
15 de Febrero del 2006
He creado una variable de tipo number para asignarle el valor de un registro de una tabla de igual tipo, pero al asignarles el valor a la variable me da un error en compilacion. Me puede decir alguien como s e hace esto???

create or replace trigger insert_general
before insert on general_information REFERENCING OLD AS old_table NEW AS new_table for each row
declare
iidpc varchar2 (20) not null default \\' \\' ;
begin
select lower(idpc) into iidpc from new_table;

chemian
15 de Febrero del 2006
muestranos el error que te da al compilar

david
15 de Febrero del 2006
Advertencia: Disparador creado con errores de compilación

david
15 de Febrero del 2006
CREATE or replace TRIGGER trig1
AFTER INSERT ON T1
REFERENCING NEW AS newRow old as oldrow
FOR EACH Row
declare
temp number(2);

BEGIN
INSERT INTO t2 VALUES(:newRow.c2, :newRow.c1);

END trig1;

ESTO LO COMPILA BIEN, PERO ESTO OTRO NO:
CREATE or replace TRIGGER trig1
AFTER INSERT ON T1
REFERENCING NEW AS newRow old as oldrow
FOR EACH Row
declare
temp number(2);

BEGIN
INSERT INTO t2 VALUES(:newRow.c2, :newRow.c1);
SELECT INTO TEMP FROM NEWROW.C2;
END trig1;

Jor-El
15 de Febrero del 2006
¿ esto que es ?

SELECT INTO TEMP FROM NEWROW.C2;

Cuando te salga : Advertencia: Disparador creado con errores de compilación

Teclea esto en el plus y nos lo pones

show err

david
15 de Febrero del 2006
temp es una variable local Varchar2, newrow es , como habras visto en la definicion de trigger dodne se guarda el nuevoregistro insertado y el campo c2 es tambien varchar2.

Jor-El
15 de Febrero del 2006
Bueno, otra oportunidad......

SELECT INTO TEMP ¿ el que ? FROM NEWROW.C2


david
15 de Febrero del 2006
intento meter en la variable local tem(varchar2) el campo c1 el registro newage(varchar2), si estubiera en sqlserver seria:

set @temp= select c1 from newage

david
15 de Febrero del 2006
intento meter en la variable local tem(varchar2) el campo c2 el registro newrow(varchar2), si estubiera en sqlserver seria:

set @temp= select c2 from newrow



Jor-El
15 de Febrero del 2006
Bieeeeen, por fin he conseguido entenderlo.
Por lo que veo no sabes hacer una asignacion en pl-sql.

Prueba así

TEMP := :newRow.c2;

¿ Eso no te rula ?


chemian
15 de Febrero del 2006
tendras que indicar que selecionas, es decir, si pones

select sysdate into temp from dual;

temp tendra el valor de sysdate, pero tu solo pones select, y despues sin especificar que seleccionas, pones directamente into temp.

david
15 de Febrero del 2006
Gracias....
pasar de sql server a oracle me esta volviendo loco....

a
15 de Febrero del 2006
hay una herramienta en oracle que te lo pasa automáticamente, podías haber empezado por preguntar éso

david
15 de Febrero del 2006
como puedo pasar los scrip hechos en sqlserve a oracle?????
cual es esa herramienta???????