trabajar con variables
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;
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;
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;
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;
¿ 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
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
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.
Bueno, otra oportunidad......
SELECT INTO TEMP ¿ el que ? FROM NEWROW.C2
SELECT INTO TEMP ¿ el que ? FROM NEWROW.C2
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
set @temp= select c1 from newage
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
set @temp= select c2 from newrow
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 ?
Por lo que veo no sabes hacer una asignacion en pl-sql.
Prueba asÃ
TEMP := :newRow.c2;
¿ Eso no te rula ?
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.
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.
hay una herramienta en oracle que te lo pasa automáticamente, podÃas haber empezado por preguntar éso
