1 TYPE BODY "JTF_DIAG_ROW" AS
2 MEMBER FUNCTION CONSTRUCT_NODE RETURN VARCHAR2 IS
3 STR varchar2(20000);
4 BEGIN
5 STR := '<node>';
6 STR := STR || ' <row>';
7 for x in SELF.COLS.FIRST .. SELF.COLS.LAST
8 LOOP
9 STR := STR || ' <col>';
10 STR := STR || DBMS_XMLGEN.CONVERT(COLS(x) ,1);
11 STR := STR || ' </col>';
12 END LOOP;
13 STR := STR || ' </row>';
14 STR := STR || ' </node>';
15 RETURN STR;
16 END CONSTRUCT_NODE;
17 MEMBER PROCEDURE ADD_COLUMN(COL VARCHAR2) IS
18 no_of_cols number :=0;
19 BEGIN
20 IF ADDED_TO_PARENT = 1 THEN
21 RAISE_APPLICATION_ERROR(-20100,'Row has already been added to the report');
22 END IF;
23 IF COL IS NOT NULL THEN
24 no_of_cols := GET_NO_OF_COLS;
25 no_of_cols := no_of_cols + 1;
26 IF no_of_cols = 1 THEN
27 SELF.COLS := JTF_VARCHAR2_TABLE_4000(DBMS_XMLGEN.CONVERT(COL,1));
28 ELSE
29 COLS.EXTEND;
30 COLS(no_of_cols) := DBMS_XMLGEN.CONVERT(COL,1);
31 END IF;
32 ELSE
33 RAISE_APPLICATION_ERROR(-20100,'Column is empty');
34 END IF;
35 END ADD_COLUMN;
36 MEMBER FUNCTION GET_NO_OF_COLS RETURN NUMBER IS
37 no_of_columns NUMBER := 0;
38 BEGIN
39 FOR I IN SELF.COLS.FIRST .. SELF.COLS.LAST
40 LOOP
41 no_of_columns := no_of_columns + 1;
42 END LOOP;
43 RETURN no_of_columns;
44 exception
45 when others then
46 return 0;
47 END GET_NO_OF_COLS;
48 MEMBER PROCEDURE SET_ADDED_TO_PARENT IS
49 BEGIN
50 SELF.ADDED_TO_PARENT := 1;
51 END SET_ADDED_TO_PARENT;
52 END;