DESDE UNA FUNCION HACER LLAMADO A UN TRIGGER
Publicado por Blades (1 intervención) el 22/10/2009 18:15:26
Buenos dias queria hacer la consulta sobre un trigger... pasa que tengo un trigger que funciona correctamente... lo que ahora estoy haciendo es que parte de ese trigger lo estoy poniendo como funcion ya que luego lo voy a reutilizar para otros triggers..
Pero cuando ejecuto la funcion me sale un error que es este
PLS-00049: bad bind variable'NEW.SCRIPT_VARCHAR1' LINE:7 COLUMN: 16
PLS-00049: bad bind variable'NEW.SCRIPT_VARCHAR1' LINE:8 COLUMN: 11
PLS-00049: bad bind variable'NEW.SCRIPT_VARCHAR1' LINE:9 COLUMN: 11
PLS-00049: bad bind variable'NEW.SCRIPT_VARCHAR1' LINE:10 COLUMN: 11
PLS-00049: bad bind variable'NEW.SCRIPT_VARCHAR1' LINE:11 COLUMN: 11
PLS-00049: bad bind variable'NEW.SCRIPT_VARCHAR1' LINE:12 COLUMN: 11
PLS-00049: bad bind variable'NEW.SCRIPT_VARCHAR1' LINE:15 COLUMN: 7
PLS-00049: bad bind variable'NEW.SCRIPT_VARCHAR2' LINE:18 COLUMN: 11
PLS-00049: bad bind variable'NEW.SCRIPT_VARCHAR2' LINE:19 COLUMN: 11
PLS-00049: bad bind variable'NEW.SCRIPT_VARCHAR2' LINE:20 COLUMN: 11
PLS-00049: bad bind variable'NEW.SCRIPT_VARCHAR2' LINE:21 COLUMN: 11
PLS-00049: bad bind variable'NEW.SCRIPT_VARCHAR2' LINE:22 COLUMN: 11
PLS-00049: bad bind variable'NEW.SCRIPT_VARCHAR2' LINE:23 COLUMN: 11
PLS-00049: bad bind variable'NEW.SCRIPT_VARCHAR2' LINE:26 COLUMN: 7
PLS-00049: bad bind variable'NEW.SCRIPT_VARCHAR3' LINE:29 COLUMN: 11
PLS-00049: bad bind variable'NEW.SCRIPT_VARCHAR3' LINE:30 COLUMN: 11
PLS-00049: bad bind variable'NEW.SCRIPT_VARCHAR3' LINE:31 COLUMN: 11
PLS-00049: bad bind variable'NEW.SCRIPT_VARCHAR3' LINE:32 COLUMN: 11
PLS-00049: bad bind variable'NEW.SCRIPT_VARCHAR3' LINE:33 COLUMN: 11
PLS-00049: bad bind variable'NEW.SCRIPT_VARCHAR3' LINE:34 COLUMN: 11
la funcion que quiero crear es este:
CREATE OR REPLACE FUNCTION GENESYS_OCS.fn_setea_campos(x varchar)
RETURN NUMBER
IS
result NUMBER;
BEGIN
IF ( LOWER (:NEW.script_varchar1) = 'no contesta'
OR :NEW.script_varchar1 = 'Seleccione Alternativa'
OR :NEW.script_varchar1 = 'Seleccionar Alternativa'
OR :NEW.script_varchar1 = 'Seleccione Dia'
OR :NEW.script_varchar1 = 'Seleccione Mes'
OR :NEW.script_varchar1 = 'Seleccione Ao'
)
THEN
:NEW.script_varchar1 := '';
END IF;
IF ( :NEW.script_varchar2 = 'No Contesta'
OR :NEW.script_varchar2 = 'Seleccione Alternativa'
OR :NEW.script_varchar2 = 'Seleccionar Alternativa'
OR :NEW.script_varchar2 = 'Seleccione Dia'
OR :NEW.script_varchar2 = 'Seleccione Mes'
OR :NEW.script_varchar2 = 'Seleccione Ao'
)
THEN
:NEW.script_varchar2 := '';
END IF;
IF ( :NEW.script_varchar3 = 'No Contesta'
OR :NEW.script_varchar3 = 'Seleccione Alternativa'
OR :NEW.script_varchar3 = 'Seleccionar Alternativa'
OR :NEW.script_varchar3 = 'Seleccione Dia'
OR :NEW.script_varchar3 = 'Seleccione Mes'
OR :NEW.script_varchar3 = 'Seleccione Ao'
)
THEN
:NEW.script_varchar3 := '';
END IF;
.
.
.
.
.
IF ( :NEW.script_varchar39 = 'No Contesta'
OR :NEW.script_varchar39 = 'Seleccione Alternativa'
OR :NEW.script_varchar39 = 'Seleccionar Alternativa'
OR :NEW.script_varchar39 = 'Seleccione Dia'
OR :NEW.script_varchar39 = 'Seleccione Mes'
OR :NEW.script_varchar39 = 'Seleccione Ao'
)
THEN
:NEW.script_varchar39 := '';
END IF;
--return(result);
--EXCEPTION WHEN NO_DATA_FOUND THEN
return 0;
END ;
/
y bueno arriba ya les detalle el error... no soy muy diestro en esto pero creo que el problema esta en el x varchar tal vez este incorrecto... he estado investigando y tal vez sea asi ....x IN varchar.... no lo se en realidad....
Por favor quisiera que m ayuden ya que siempre me han dado la mano ustedes
muy agradecidos por la ayuda
BLADES
Pdta: Por favor al momento de ecplicarme la solucion pdio que sean lo mas explicitos ya que recien estoy comenzandp en esto.. para entender si muchas gracias
Pero cuando ejecuto la funcion me sale un error que es este
PLS-00049: bad bind variable'NEW.SCRIPT_VARCHAR1' LINE:7 COLUMN: 16
PLS-00049: bad bind variable'NEW.SCRIPT_VARCHAR1' LINE:8 COLUMN: 11
PLS-00049: bad bind variable'NEW.SCRIPT_VARCHAR1' LINE:9 COLUMN: 11
PLS-00049: bad bind variable'NEW.SCRIPT_VARCHAR1' LINE:10 COLUMN: 11
PLS-00049: bad bind variable'NEW.SCRIPT_VARCHAR1' LINE:11 COLUMN: 11
PLS-00049: bad bind variable'NEW.SCRIPT_VARCHAR1' LINE:12 COLUMN: 11
PLS-00049: bad bind variable'NEW.SCRIPT_VARCHAR1' LINE:15 COLUMN: 7
PLS-00049: bad bind variable'NEW.SCRIPT_VARCHAR2' LINE:18 COLUMN: 11
PLS-00049: bad bind variable'NEW.SCRIPT_VARCHAR2' LINE:19 COLUMN: 11
PLS-00049: bad bind variable'NEW.SCRIPT_VARCHAR2' LINE:20 COLUMN: 11
PLS-00049: bad bind variable'NEW.SCRIPT_VARCHAR2' LINE:21 COLUMN: 11
PLS-00049: bad bind variable'NEW.SCRIPT_VARCHAR2' LINE:22 COLUMN: 11
PLS-00049: bad bind variable'NEW.SCRIPT_VARCHAR2' LINE:23 COLUMN: 11
PLS-00049: bad bind variable'NEW.SCRIPT_VARCHAR2' LINE:26 COLUMN: 7
PLS-00049: bad bind variable'NEW.SCRIPT_VARCHAR3' LINE:29 COLUMN: 11
PLS-00049: bad bind variable'NEW.SCRIPT_VARCHAR3' LINE:30 COLUMN: 11
PLS-00049: bad bind variable'NEW.SCRIPT_VARCHAR3' LINE:31 COLUMN: 11
PLS-00049: bad bind variable'NEW.SCRIPT_VARCHAR3' LINE:32 COLUMN: 11
PLS-00049: bad bind variable'NEW.SCRIPT_VARCHAR3' LINE:33 COLUMN: 11
PLS-00049: bad bind variable'NEW.SCRIPT_VARCHAR3' LINE:34 COLUMN: 11
la funcion que quiero crear es este:
CREATE OR REPLACE FUNCTION GENESYS_OCS.fn_setea_campos(x varchar)
RETURN NUMBER
IS
result NUMBER;
BEGIN
IF ( LOWER (:NEW.script_varchar1) = 'no contesta'
OR :NEW.script_varchar1 = 'Seleccione Alternativa'
OR :NEW.script_varchar1 = 'Seleccionar Alternativa'
OR :NEW.script_varchar1 = 'Seleccione Dia'
OR :NEW.script_varchar1 = 'Seleccione Mes'
OR :NEW.script_varchar1 = 'Seleccione Ao'
)
THEN
:NEW.script_varchar1 := '';
END IF;
IF ( :NEW.script_varchar2 = 'No Contesta'
OR :NEW.script_varchar2 = 'Seleccione Alternativa'
OR :NEW.script_varchar2 = 'Seleccionar Alternativa'
OR :NEW.script_varchar2 = 'Seleccione Dia'
OR :NEW.script_varchar2 = 'Seleccione Mes'
OR :NEW.script_varchar2 = 'Seleccione Ao'
)
THEN
:NEW.script_varchar2 := '';
END IF;
IF ( :NEW.script_varchar3 = 'No Contesta'
OR :NEW.script_varchar3 = 'Seleccione Alternativa'
OR :NEW.script_varchar3 = 'Seleccionar Alternativa'
OR :NEW.script_varchar3 = 'Seleccione Dia'
OR :NEW.script_varchar3 = 'Seleccione Mes'
OR :NEW.script_varchar3 = 'Seleccione Ao'
)
THEN
:NEW.script_varchar3 := '';
END IF;
.
.
.
.
.
IF ( :NEW.script_varchar39 = 'No Contesta'
OR :NEW.script_varchar39 = 'Seleccione Alternativa'
OR :NEW.script_varchar39 = 'Seleccionar Alternativa'
OR :NEW.script_varchar39 = 'Seleccione Dia'
OR :NEW.script_varchar39 = 'Seleccione Mes'
OR :NEW.script_varchar39 = 'Seleccione Ao'
)
THEN
:NEW.script_varchar39 := '';
END IF;
--return(result);
--EXCEPTION WHEN NO_DATA_FOUND THEN
return 0;
END ;
/
y bueno arriba ya les detalle el error... no soy muy diestro en esto pero creo que el problema esta en el x varchar tal vez este incorrecto... he estado investigando y tal vez sea asi ....x IN varchar.... no lo se en realidad....
Por favor quisiera que m ayuden ya que siempre me han dado la mano ustedes
muy agradecidos por la ayuda
BLADES
Pdta: Por favor al momento de ecplicarme la solucion pdio que sean lo mas explicitos ya que recien estoy comenzandp en esto.. para entender si muchas gracias
Valora esta pregunta


0