User Tools

Site Tools


kurs:plsql_tables

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Next revision
Previous revision
kurs:plsql_tables [2014/04/08 13:17]
mh created
kurs:plsql_tables [2015/04/09 15:38] (current)
mh
Line 1: Line 1:
 +== PLSQL Table übergeben ==
 +
 +<​code>​
 +--------------------------------------------------------
 +--  DDL for Package PCK_EMPLOYEES
 +--------------------------------------------------------
 +
 +  CREATE OR REPLACE PACKAGE "​HR"​."​PCK_EMPLOYEES"​ AS 
 +
 +cursor c_emp_dep(cp_department_name varchar2) is
 +  select employee_id,​
 +         ​first_name,​
 +         ​last_name,​
 +         ​salary,​
 +         ​department_name
 +    from employees e join departments d
 +      on e.department_id = d.department_id
 +      where department_name = cp_department_name;​
 +      ​
 +type type_emp_dep is table of c_emp_dep%rowtype
 +  index by binary_integer; ​    
 +
 +procedure get_emp_per_dep_name(
 +  p_department_name in departments.department_name%type,​
 +  t_emp_dep out type_emp_dep);​
 +
 +procedure print_emp_dep(t_emp_dep in type_emp_dep);​
 +/* 
 +procedure get_emp_per_dep_name (p_department_name in
 +type_emp_dep out von einem zu definierenden table type
 +
 +procedure print_emp_dep(type_emp_dep in)
 +)
 +
 +
 +
 +*/
 +
 +procedure next_emp;
 +
 +END PCK_EMPLOYEES;​
 +
 +/
 +</​code>​
 +
 +
 +
 10 zufällige, nicht doppelte Employees ziehen 10 zufällige, nicht doppelte Employees ziehen
  
Line 65: Line 112:
 END PLSQL_TABLE;​ END PLSQL_TABLE;​
 </​code>​ </​code>​
 +
 +=== add & delete education ===
 +<​code>​
 +CREATE OR REPLACE PROCEDURE ADD_EDUCATION ​
 +(
 +  P_PER_NAME IN VARCHAR2  ​
 +, P_NEW_EDUCATION IN VARCHAR2  ​
 +) AS 
 +  v_edu education := education();​
 +  v_index number;
 +  v_add_edu education := education(P_new_EDUCATION);​
 +BEGIN
 +  select coalesce(per_education,​ education()) into v_edu
 +    from persons where per_name = p_per_name;
 +  ​
 +  /*
 +  v_edu.extend;​
 +  v_edu(v_edu.last) := p_new_education;​
 +  */
 +  ​
 +  v_edu := v_edu multiset union all v_add_edu;
 +  ​
 +  update persons set per_education = v_edu
 +    where per_name = p_per_name;
 +  ​
 +  ​
 +END ADD_EDUCATION;​
 +
 + /​*v_edu.extend;​
 +  v_edu(v_edu.last) := '​test1';​
 +  ​
 +  v_edu.extend;​
 +  v_edu(v_edu.last) := '​test2';​
 +  ​
 +  v_edu.extend;​
 +  v_edu(v_edu.last) := '​test3';​
 +  ​
 +  ​
 +  dbms_output.put_line(v_edu.first||'​ '|| v_edu.last);​
 +  ​
 +  for i in v_edu.first .. v_edu.last loop
 +    dbms_output.put_line(i||'​ '|| v_edu(i));
 +  end loop;
 +  ​
 +  v_index := v_edu.first;​
 +  loop
 +    dbms_output.put_line(v_index||'​ '|| v_edu(v_index));​
 +    v_index := v_edu.next(v_index);​
 +    exit when v_index is null;
 +  end loop;
 +  */
 +</​code>​
 +
 +<​code>​
 +CREATE OR REPLACE PROCEDURE DELETE_EDUCATION ​
 +(
 +  P_PER_NAME IN VARCHAR2  ​
 +, P_DEL_EDUCATION IN VARCHAR2  ​
 +) AS 
 +  v_edu education := education();​
 +  v_index number;
 +  v_del_edu education := education(P_DEL_EDUCATION);​
 +BEGIN
 +  select coalesce(per_education,​ education()) into v_edu
 +    from persons where per_name = p_per_name;
 +  ​
 +  /* v_index := v_edu.first;​
 +  loop
 +    dbms_output.put_line(v_index||'​ '|| v_edu(v_index));​
 +    if  v_edu(v_index) = P_DEL_EDUCATION then
 +      v_edu.delete(v_index);​
 +    end if;
 +    v_index := v_edu.next(v_index);​
 +    exit when v_index is null;
 +  end loop;
 +  */
 +  v_edu := v_edu multiset except v_del_edu;
 +  ​
 +   ​update persons set per_education = v_edu
 +    where per_name = p_per_name;
 +  ​
 +END DELETE_EDUCATION;​
 +</​code>​
 +
kurs/plsql_tables.1396955872.txt.gz · Last modified: 2014/09/10 21:22 (external edit)