summaryrefslogtreecommitdiffstats
path: root/db_demo/sql/funcs/cr_func_insert_results.sql
blob: 5e405c85c82ec831b297e57dcdbb61609f61df7d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
CREATE OR REPLACE FUNCTION insert_results (
  boolean,     -- cexperience
  boolean,     -- wexperience
  integer,     -- agegroupid
  boolean[],   -- headtracking
  boolean[],   -- stereo
  boolean[],   -- shadow
  integer[],   -- boxsizeid
  time[][],    -- elapsedtime
  integer[][], -- holeposition
  integer[][]  -- blockid
) RETURNS integer AS $$
DECLARE
  par_cexperience  ALIAS FOR $1;
  par_wexperience  ALIAS FOR $2;
  par_agegroupid   ALIAS FOR $3;
  par_headtracking ALIAS FOR $4;
  par_stereo       ALIAS FOR $5;
  par_shadow       ALIAS FOR $6;
  par_boxsizeid    ALIAS FOR $7;
  par_elapsedtime  ALIAS FOR $8;
  par_holeposition ALIAS FOR $9;
  par_blockid      ALIAS FOR $10;

  i                integer;
  j                integer;
  var_ntests       integer;
  var_nturns       integer;
  var_personid     integer;
  var_testid       integer;
BEGIN
  i := 0;

  SELECT INTO var_personid insert_person(par_cexperience,
                                         par_wexperience,
                                         par_agegroupid);

  var_ntests = array_upper(par_headtracking, 1);

  WHILE i < var_ntests LOOP
    SELECT INTO var_testid insert_test(var_personid,
                                       par_headtracking,
                                       par_stereo,
                                       par_shadow,
                                       par_boxsizeid);
    
    var_nturns = array_upper(elapsedtime[i], 1);
    j := 0;

    WHILE j < var_nturns LOOP
      PERFORM insert_turn(var_testid,
                          par_elapsedtime,
                          par_holeposition,
                          par_blockid);
    END LOOP;

  END LOOP;

  RETURN var_ntests * var_nturns;
END;
$$ LANGUAGE plpgsql;