Depurar Procedimiento
Espero no molestarte, otra vez en problemas, me ayudas a depurar este procedimiento que me esta volviendo loco, por favor, la tabla es esta:
CREATE TABLE visual (
Id_v INT NOT NULL PRIMARY KEY,
fecha DATE,
equipo char (25) NOT NULL,
placa char (50),
recubrimiento char (50),
estado_recubrimiento char (100),
accesorios char (100),
anclajes_bases char (100),
puesta_tierra char (100),
corrosion_ext char (100),
escalera_acceso char (100),
uniones_soldadas char (100),
foto BLOB,
diagrama BLOB,
observaciones char (100),
CONSTRAINT ClaveExtvisualnombre_equ FOREIGN KEY (equipo) REFERENCES equipos ON DELETE CASCADE);
CREATE SEQUENCE seq_visual
start WITH 1
increment BY 1
nomaxvalue;
CREATE OR REPLACE TRIGGER trig_visual
BEFORE INSERT ON visual
FOR EACH ROW
BEGIN
SELECT seq_visual.NEXTVAL INTO :new.Id_v FROM dual;
END;
/
el procedimiento es este:
CREATE OR REPLACE PROCEDURE INSERTA_visual (v_Id_v INT,
v_fecha DATE,
v_equipo CHAR,
v_placa CHAR,
v_recubrimiento CHAR,
v_estado_recubrimiento CHAR,
v_accesorios CHAR,
v_anclajes_bases CHAR,
v_puesta_tierra CHAR,
V_corrosion_ext CHAR,
v_escalera_acceso CHAR,
v_uniones_soldadas CHAR,
v_foto VARCHAR2,
v_diagrama VARCHAR2,
v_observaciones CHAR)
IS
--
l_bfile BFILE;
l_blob BLOB;
l_bfile2 BFILE;
l_blob2 BLOB;
--
BEGIN
--
INSERT INTO VISUAL
(Id_v, fecha, equipo,placa,recubrimiento,estado_recubrimiento, accesorios,anclajes_bases, puesta_tierra,corrosion_ext,escalera_acceso,uniones_soldadas,foto,diagrama,observaciones)
VALUES
(v_Id_v, to_date(v_fecha), v_equipo, v_placa, v_recubrimiento, v_estado_recubrimiento, v_accesorios, v_anclajes_bases, v_puesta_tierra,v_corrosion_ext, v_escalera_acceso,v_uniones_soldadas,EMPTY_BLOB(),EMPTY_BLOB(),v_observaciones);
RETURN foto, diagrama INTO l_blob, l_blob2;
--
l_bfile := BFILENAME ('VISUAL', v_foto);
--
DBMS_LOB.fileopen(l_bfile, Dbms_Lob.File_Readonly);
DBMS_LOB.Loadfromfile(l_blob,l_bfile,DBMS_LOB.getlength(l_bfile));
DBMS_LOB.fileclose(l_bfile);
--
l_bfile2 := BFILENAME ('DIAGRAMA', v_diagrama);
--
DBMS_LOB.fileopen(l_bfile2, Dbms_Lob.File_Readonly);
DBMS_LOB.Loadfromfile(l_blob2,l_bfile2,DBMS_LOB.getlength(l_bfile2));
DBMS_LOB.fileclose(l_bfile2);
--
COMMIT;
--
EXCEPTION
WHEN OTHERS THEN
DBMS_OUTPUT.PUT_LINE( SQLERRM ); -- Muestra un mensaje de error si se produce
--
ROLLBACK;
---
RAISE;
--
END INSERTA_visual;
/
E inserto la información así:
exec inserta_visual ('','19/02/2008','AB107','No presenta','Altos Solidos','Degradación y entizamiento','Entizamiento, desprendimiento del recubrimiento','Silla metalica en buen estado, pernos de anclaje con corrosión generalizada por acumulación de agua','Buen estado','Buen estado','','sin indicaciones','ASEP107_GENERAL.jpg','ASEP107_DIAGRAMA.jpg','');
No se que esta mal lo he revisado varias veces pero no encuentro la falla, como vez la tabla tiene un disparador para en el primer campo que funciona como un autonumérico, por eso en la inserción esta bacio. Pero no se porque no corre.
CREATE TABLE visual (
Id_v INT NOT NULL PRIMARY KEY,
fecha DATE,
equipo char (25) NOT NULL,
placa char (50),
recubrimiento char (50),
estado_recubrimiento char (100),
accesorios char (100),
anclajes_bases char (100),
puesta_tierra char (100),
corrosion_ext char (100),
escalera_acceso char (100),
uniones_soldadas char (100),
foto BLOB,
diagrama BLOB,
observaciones char (100),
CONSTRAINT ClaveExtvisualnombre_equ FOREIGN KEY (equipo) REFERENCES equipos ON DELETE CASCADE);
CREATE SEQUENCE seq_visual
start WITH 1
increment BY 1
nomaxvalue;
CREATE OR REPLACE TRIGGER trig_visual
BEFORE INSERT ON visual
FOR EACH ROW
BEGIN
SELECT seq_visual.NEXTVAL INTO :new.Id_v FROM dual;
END;
/
el procedimiento es este:
CREATE OR REPLACE PROCEDURE INSERTA_visual (v_Id_v INT,
v_fecha DATE,
v_equipo CHAR,
v_placa CHAR,
v_recubrimiento CHAR,
v_estado_recubrimiento CHAR,
v_accesorios CHAR,
v_anclajes_bases CHAR,
v_puesta_tierra CHAR,
V_corrosion_ext CHAR,
v_escalera_acceso CHAR,
v_uniones_soldadas CHAR,
v_foto VARCHAR2,
v_diagrama VARCHAR2,
v_observaciones CHAR)
IS
--
l_bfile BFILE;
l_blob BLOB;
l_bfile2 BFILE;
l_blob2 BLOB;
--
BEGIN
--
INSERT INTO VISUAL
(Id_v, fecha, equipo,placa,recubrimiento,estado_recubrimiento, accesorios,anclajes_bases, puesta_tierra,corrosion_ext,escalera_acceso,uniones_soldadas,foto,diagrama,observaciones)
VALUES
(v_Id_v, to_date(v_fecha), v_equipo, v_placa, v_recubrimiento, v_estado_recubrimiento, v_accesorios, v_anclajes_bases, v_puesta_tierra,v_corrosion_ext, v_escalera_acceso,v_uniones_soldadas,EMPTY_BLOB(),EMPTY_BLOB(),v_observaciones);
RETURN foto, diagrama INTO l_blob, l_blob2;
--
l_bfile := BFILENAME ('VISUAL', v_foto);
--
DBMS_LOB.fileopen(l_bfile, Dbms_Lob.File_Readonly);
DBMS_LOB.Loadfromfile(l_blob,l_bfile,DBMS_LOB.getlength(l_bfile));
DBMS_LOB.fileclose(l_bfile);
--
l_bfile2 := BFILENAME ('DIAGRAMA', v_diagrama);
--
DBMS_LOB.fileopen(l_bfile2, Dbms_Lob.File_Readonly);
DBMS_LOB.Loadfromfile(l_blob2,l_bfile2,DBMS_LOB.getlength(l_bfile2));
DBMS_LOB.fileclose(l_bfile2);
--
COMMIT;
--
EXCEPTION
WHEN OTHERS THEN
DBMS_OUTPUT.PUT_LINE( SQLERRM ); -- Muestra un mensaje de error si se produce
--
ROLLBACK;
---
RAISE;
--
END INSERTA_visual;
/
E inserto la información así:
exec inserta_visual ('','19/02/2008','AB107','No presenta','Altos Solidos','Degradación y entizamiento','Entizamiento, desprendimiento del recubrimiento','Silla metalica en buen estado, pernos de anclaje con corrosión generalizada por acumulación de agua','Buen estado','Buen estado','','sin indicaciones','ASEP107_GENERAL.jpg','ASEP107_DIAGRAMA.jpg','');
No se que esta mal lo he revisado varias veces pero no encuentro la falla, como vez la tabla tiene un disparador para en el primer campo que funciona como un autonumérico, por eso en la inserción esta bacio. Pero no se porque no corre.
1 respuesta
Respuesta de neosys
1