下面的函数有一个嵌套循环,并试图返回finish()
函数的值,PgTap
如下所示
CREATE or REPLACE FUNCTION public.udf_unit_test_output() RETURNS SETOF text AS
$$
DECLARE
v_expected_occurence int;
v_actual_occurence int;
record_list record;
distinct_unit_test_uuid record;
BEGIN
for distinct_unit_test_uuid in
SELECT DISTINCT unit_test_uuid FROM public.unit_test_expected_results
loop
for record_list in select record_id
from public.unit_test_expected_results
WHERE unit_test_uuid = (distinct_unit_test_uuid.unit_test_uuid :: uuid)
loop
SELECT proc_name, log_severity, log_text, occurence
FROM public.unit_test_expected_results
WHERE record_id = record_list.record_id
INTO v_expected_log_severity;
SELECT COUNT(*)
FROM public.unit_test_output uto
WHERE unit_test_uuid = (distinct_unit_test_uuid.unit_test_uuid :: uuid)
INTO v_actual_occurence;
RETURN QUERY SELECT is(v_expected_occurence, v_actual_occurence,
'Should match the expected occurrence and actual occurrence');
end loop;
end loop;
RETURN;
END;
$$
LANGUAGE plpgsql;
当我尝试执行以下命令时
BEGIN;
SELECT plan( COUNT(*) :: int) from unit_test_expected_results;
SELECT udf_unit_test_output();
SELECT * FROM finish();
ROLLBACK;
END
输出控制台有下面的记录