Advertisement
Guest User

lab1plsql

a guest
Oct 13th, 2015
67
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PL/SQL 2.77 KB | None | 0 0
  1. --1
  2. SET serveroutput ON;
  3.  
  4. DECLARE
  5. --v_x NUMBER(4,2) := &x;
  6. --v_y NUMBER(4,3) := &y;
  7.  
  8. --v_xx VARCHAR(20) := '&xx';
  9. --v_yy VARCHAR(10) := '&yy';
  10.  
  11. v_max NUMBER := &m;
  12. v_start NUMBER := 0;
  13.  
  14. BEGIN
  15.  
  16.   --dbms_output.put_line(v_x + v_y);
  17.   --dbms_output.put_line(v_xx || v_yy);
  18.   --LOOP
  19.   --  dbms_output.put(v_start);
  20.   --  dbms_output.put(' ');
  21.   --  EXIT WHEN v_start = v_max;
  22.   --  v_start := v_start + 1;
  23.   --END LOOP;
  24.  
  25.   --WHILE v_start < v_max LOOP
  26.   --  dbms_output.put(v_start);
  27.   --  dbms_output.put(' ');
  28.   --  v_start := v_start + 1;  
  29.   --END LOOP;
  30.  
  31.   FOR i IN v_start .. v_max LOOP
  32.     IF i MOD 2 = 0 THEN
  33.       DBMS_OUTPUT.put(i);
  34.       DBMS_OUTPUT.put(' ');    
  35.     END IF;
  36.   END LOOP;
  37.  
  38.   DBMS_OUTPUT.put_line(' ');
  39.  
  40. END;
  41.  
  42. /
  43.  
  44. SET serveroutput ON
  45.  
  46. DECLARE
  47. v_ok NUMBER := 0;
  48. v_max NUMBER := &MAX;
  49. v_start NUMBER := 2;
  50.  
  51. BEGIN
  52.  
  53.   FOR i IN v_start .. v_max LOOP
  54.     v_ok := 0;
  55.     FOR j IN 2 .. SQRT(i) LOOP
  56.       IF (MOD(i,j) = 0) THEN v_ok := 1;
  57.       END IF;
  58.     END LOOP;
  59.     IF(v_ok = 0) THEN DBMS_OUTPUT.put_line(i);
  60.     END IF;
  61.   END LOOP;
  62.  
  63. END;
  64.  
  65. /
  66.  
  67. SET serveroutput ON;
  68.  
  69. DECLARE
  70. v_salary NUMBER;
  71. v_exists NUMBER;
  72.  
  73. BEGIN
  74.  
  75.   SELECT COUNT(salary) INTO v_exists FROM employees WHERE employee_id = 25;
  76.   IF (v_exists > 0) THEN
  77.     SELECT salary INTO v_salary FROM employees WHERE employee_id = 25;
  78.     DBMS_OUTPUT.put_line(v_salary);
  79.   ELSIF (v_exists = 0) THEN
  80.     DBMS_OUTPUT.put_line('Nu exista acest angajat!');
  81.   END IF;
  82.  
  83. END;
  84.  
  85. /
  86.  
  87. CREATE OR REPLACE FUNCTION get_sal_t(id NUMBER) RETURN NUMBER IS
  88. v_salary NUMBER;
  89. v_exists NUMBER;
  90. BEGIN
  91.  
  92.   SELECT COUNT(salary) INTO v_exists FROM employees WHERE employee_id = id;
  93.   IF (v_exists > 0) THEN
  94.     SELECT salary INTO v_salary FROM employees WHERE employee_id = id;
  95.     RETURN v_salary;
  96.   ELSIF (v_exists = 0) THEN
  97.     RETURN -1;
  98.   END IF;
  99.  
  100. END;
  101.  
  102. /
  103.  
  104. SELECT get_sal_t(120) FROM dual;
  105.  
  106. /
  107.  
  108. SELECT get_sal_t(employee_id) FROM employees;
  109.  
  110. /
  111.  
  112. CREATE VIEW emp_view AS (
  113.   SELECT last_name, salary, hire_date FROM employees
  114. );
  115.  
  116. DROP VIEW emp_view;
  117.  
  118. CREATE VIEW emp_view AS (
  119.   SELECT last_name a, salary b, hire_date c FROM employees
  120. );
  121.  
  122. /
  123.  
  124. SET serveroutput ON;
  125.  
  126. DECLARE
  127. v_emp emp_view%ROWTYPE;
  128.  
  129. BEGIN
  130.  
  131.   SELECT last_name, salary, hire_date INTO v_emp FROM employees WHERE department_id = 90 AND employee_id = 102;
  132.   DBMS_OUTPUT.put_line('Employee: ' || v_emp.a);
  133.   DBMS_OUTPUT.put_line('Salary:' || v_emp.b);
  134.   DBMS_OUTPUT.put_line('Hire date: ' || v_emp.c);
  135.    
  136. END;
  137.  
  138. /
  139.  
  140. VARIABLE v_sql NUMBER;
  141. --UPDATE employees SET salary = salary + 5 WHERE employee_id = 190;
  142. --RETURNING salary INTO :v_sql;
  143.  
  144. --rollback;
  145. /
  146. BEGIN
  147.  
  148.    SELECT salary INTO :v_sql
  149.    FROM employees
  150.    WHERE employee_id = 190;
  151.  
  152. END;
  153. /
  154. print v_sql
  155.  
  156. /
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement