create or replace type myfilet as object
(
filedate date,
filename varchar2(100)
)
Type created.
create or replace type myfile is table of myfilet
Type created.
create table myreg
(
id number,
empname varchar2(100),
empsurname varchar2(100),
empfiles myfile
)
NESTED TABLE empfiles STORE AS allempfiles
Table created.
create or replace procedure addfile (l_id number, l_empname varchar2, l_empsurname varchar2, l_myfilename varchar2)
is
l_myfiles myfile:=myfile();
begin
insert into myreg values(l_id, l_empname, l_empsurname, l_myfiles);
insert into table(select empfiles from myreg where id=l_id)(filedate,filename) values(sysdate,l_myfilename);
commit;
end;
Procedure created.
CREATE OR REPLACE TRIGGER TRG_MYREG
BEFORE INSERT OR UPDATE
ON MYREG
FOR EACH ROW
DECLARE
v_code NUMBER;
v_errm VARCHAR2(64);
BEGIN
FOR I IN :NEW.EMPFILES.FIRST..:NEW.EMPFILES.LAST
LOOP
IF :NEW.EMPFILES(I).FILENAME LIKE '%\_pdf.p7m' ESCAPE '\' THEN
:NEW.EMPFILES(I).FILENAME:=REPLACE(:NEW.EMPFILES(I).FILENAME,'_pdf.p7m','.pdf.p7m');
END IF;
END LOOP;
EXCEPTION
WHEN OTHERS THEN
v_code := SQLCODE;
v_errm := SUBSTR(SQLERRM, 1 , 64);
DBMS_OUTPUT.PUT_LINE(v_code || '- ' || v_errm );
END;
Trigger created.
begin
ADDFILE(1,'MICKEY','MOUSE','mickey_pdf.p7m');
end;
Statement processed.
-6502- ORA-06502: PL/SQL: numeric or value error