@@ -3890,3 +3890,77 @@ END;
38903890SELECT test_func_1005_multi(10 ) FROM dual;
38913891
38923892DROP FUNCTION test_func_1005_multi;
3893+ CREATE TABLE test_subproc_recfield (id integer , name varchar2 (256 ));
3894+
3895+ CREATE OR REPLACE FUNCTION trig_subproc_recfield1 () RETURNS TRIGGER AS $$
3896+ DECLARE
3897+ v_id integer := new .id ;
3898+ FUNCTION get_id() RETURN integer IS
3899+ BEGIN
3900+ RETURN v_id;
3901+ END;
3902+ BEGIN
3903+ RAISE INFO ' id: %' , get_id();
3904+ RETURN new;
3905+ END;
3906+ $$ LANGUAGE plisql;
3907+ /
3908+
3909+ CREATE TRIGGER trig_subproc_recfield1_trig
3910+ AFTER INSERT ON test_subproc_recfield
3911+ FOR EACH ROW EXECUTE PROCEDURE trig_subproc_recfield1();
3912+
3913+ INSERT INTO test_subproc_recfield VALUES (42 , ' hello' );
3914+
3915+ DROP TRIGGER trig_subproc_recfield1_trig ON test_subproc_recfield;
3916+ DROP FUNCTION trig_subproc_recfield1();
3917+
3918+ CREATE OR REPLACE FUNCTION trig_subproc_recfield2 () RETURNS TRIGGER AS $$
3919+ DECLARE
3920+ v_id integer := new .id ;
3921+ v_result integer := 0 ;
3922+ PROCEDURE accumulate(p_val integer ) IS
3923+ BEGIN
3924+ v_result := v_result + p_val;
3925+ END;
3926+ BEGIN
3927+ accumulate(v_id);
3928+ RAISE INFO ' result: %' , v_result;
3929+ RETURN new;
3930+ END;
3931+ $$ LANGUAGE plisql;
3932+ /
3933+
3934+ CREATE TRIGGER trig_subproc_recfield2_trig
3935+ AFTER INSERT ON test_subproc_recfield
3936+ FOR EACH ROW EXECUTE PROCEDURE trig_subproc_recfield2();
3937+
3938+ INSERT INTO test_subproc_recfield VALUES (10 , ' world' );
3939+
3940+ DROP TRIGGER trig_subproc_recfield2_trig ON test_subproc_recfield;
3941+ DROP FUNCTION trig_subproc_recfield2();
3942+
3943+ CREATE OR REPLACE FUNCTION trig_subproc_recfield3 () RETURNS TRIGGER AS $$
3944+ DECLARE
3945+ v_id integer := new .id ;
3946+ v_name varchar2 (256 ) := new .name ;
3947+ FUNCTION summary() RETURN text IS
3948+ BEGIN
3949+ RETURN v_id::text || ' :' || v_name;
3950+ END;
3951+ BEGIN
3952+ RAISE INFO ' %' , summary();
3953+ RETURN new;
3954+ END;
3955+ $$ LANGUAGE plisql;
3956+ /
3957+
3958+ CREATE TRIGGER trig_subproc_recfield3_trig
3959+ AFTER INSERT ON test_subproc_recfield
3960+ FOR EACH ROW EXECUTE PROCEDURE trig_subproc_recfield3();
3961+
3962+ INSERT INTO test_subproc_recfield VALUES (5 , ' test' );
3963+
3964+ DROP TRIGGER trig_subproc_recfield3_trig ON test_subproc_recfield;
3965+ DROP FUNCTION trig_subproc_recfield3();
3966+ DROP TABLE test_subproc_recfield;
0 commit comments