Advertisement
Guest User

Untitled

a guest
Jun 18th, 2018
73
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PL/SQL 0.96 KB | None | 0 0
  1. -- create procedure
  2. DECLARE
  3.    CURSOR problems_cursor IS
  4.    SELECT *
  5.     FROM problems;
  6.     pr_id NUMBER;
  7.     pr_name VARCHAR2(40);
  8.     l_sql VARCHAR2(2048);
  9.     l_from_part VARCHAR2(2048);
  10. BEGIN
  11.     l_sql := 'CREATE OR REPLACE VIEW acm_results AS SELECT teams.team_name';
  12.     l_from_part := 'from teams';
  13.     OPEN problems_cursor;
  14.     LOOP
  15.     FETCH problems_cursor INTO pr_id, pr_name;
  16.         EXIT WHEN problems_cursor%notfound;
  17.         l_sql := l_sql || ', CASE WHEN max(att' || pr_id || '.is_correct) = 1 THEN ''+'' ELSE ''-'' END AS ' || pr_name;
  18.         l_from_part := l_from_part || ' LEFT JOIN attempts att' || pr_id || ' ON teams.team_id  = att' || pr_id || '.team_id AND att' || pr_id || '.problem_id = ' || pr_id;
  19.     END LOOP;
  20.     CLOSE problems_cursor;
  21.     l_sql := l_sql || ' ' || l_from_part || ' GROUP BY(teams.team_name)';
  22.     DBMS_OUTPUT.put_line(l_sql);
  23.     EXECUTE IMMEDIATE l_sql;
  24. END;
  25.  
  26. --- to query view
  27. SELECT * FROM acm_results;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement