Beruflich Dokumente
Kultur Dokumente
FROM EMPLOYEE;
DECLARE
emp_id employees_temp.employee_id%TYPE;
emp_first_name employees_temp.first_name%TYPE;
emp_last_name employees_temp.last_name%TYPE;
BEGIN
INSERT INTO employees_temp VALUES(299, 'Bob', 'Henry'); ---INSERT
UPDATE employees_temp SET first_name = 'Robert' WHERE employee_id = 299; -----UPDATE
DELETE FROM employees_temp WHERE employee_id = 299 -----DELECT
RETURNING first_name, last_name INTO emp_first_name, emp_last_name;
COMMIT;
DBMS_OUTPUT.PUT_LINE( emp_first_name || ' ' || emp_last_name);
END;
---SQL%ROWCOUNT
CREATE TABLE employee_temp AS SELECT * FROM employee;
BEGIN
UPDATE employee_temp SET salary = salary * 1.05 WHERE salary < 2500;
DBMS_OUTPUT.PUT_LINE('Updated ' || SQL%ROWCOUNT || ' salaries.');
END;
-----NOTFOUND
DECLARE
v_jobid employee.job_id%TYPE; -- variable for job_id
v_lastname employee.last_name%TYPE; -- variable for last_name
CURSOR c1 IS SELECT last_name, job_id FROM employee
WHERE job_id=670;
v_employees employee%ROWTYPE; -- record variable for row
CURSOR c2 is SELECT * FROM employee
WHERE job_id=671;
BEGIN
OPEN c1; -- open the cursor before fetching
LOOP
FETCH c1 INTO v_lastname, v_jobid; -- fetches 2 columns into variables
EXIT WHEN c1%NOTFOUND;
DBMS_OUTPUT.PUT_LINE( RPAD(v_lastname, 25, ' ') || v_jobid );
END LOOP;
CLOSE c1;
DBMS_OUTPUT.PUT_LINE( '-------------------------------------' );
OPEN c2;
LOOP
FETCH c2 INTO v_employees; -- fetches entire row into the v_employees record
EXIT WHEN c2%NOTFOUND;
DBMS_OUTPUT.PUT_LINE( RPAD(v_employees.last_name, 25, ' ') ||
v_employees.job_id );
END LOOP;
CLOSE c2;
END;
-------ref cursor
set serveroutput on;
DECLARE
TYPE REF_CUR IS REF CURSOR RETURN emp%ROWTYPE;
V_REF_CUR REF_CUR;
V_EMP emp%ROWTYPE;
begin
open V_REF_CUR FOR select * from emp;
loop
FETCH V_REF_CUR INTO V_EMP;
EXIT WHEN V_REF_CUR%NOTFOUND;
DBMS_OUTPUT.PUT_LINE(V_EMP.ename||' '||V_EMP.empno||' '||V_EMP.job||' '||V_EMP.job);
END LOOP;
CLOSE V_REF_CUR;
END;
-----cursor
set serveroutput on;
DECLARE
CURSOR emp_cursor IS SELECT empno,ename FROM emp;
v_empno emp.empno%TYPE;
v_ename emp.ename%TYPE;
BEGIN
IF NOT emp_cursor% ISOPEN THEN
OPEN emp_cursor;
END IF;
LOOP
FETCH emp_cursor INTO v_empno,v_ename;
EXIT WHEN emp_cursor%NOTFOUND;
DBMS_OUTPUT.PUT_LINE('EMP NAME: '||v_ename||' EMP NO: '||v_empno);
END LOOP;
CLOSE emp_cursor;
END;
select * from emp;
-----cursor parameter
set serveroutput on;
declare
cursor cur_emp1(in_deptno integer) is select * from emp where deptno=in_deptno;
v_cur cur_emp1%rowtype;
begin
open cur_emp1(20);
loop
fetch cur_emp1 into v_cur;
DBMS_OUTPUT.PUT_LINE('ename :'||v_cur.ename);
exit when cur_emp1%notfound;
end loop;
close cur_emp1;
open cur_emp1(10);
loop
fetch cur_emp1 into v_cur;
DBMS_OUTPUT.PUT_LINE('ename :'||v_cur.ename);
exit when cur_emp1%notfound;
end loop;
close cur_emp1;
end;
-------ref cursor
set serveroutput on;
DECLARE
TYPE REF_CUR IS REF CURSOR RETURN emp%ROWTYPE;
V_REF_CUR REF_CUR;
V_EMP emp%ROWTYPE;
begin
open V_REF_CUR FOR select * from emp;
loop
FETCH V_REF_CUR INTO V_EMP;
EXIT WHEN V_REF_CUR%NOTFOUND;
DBMS_OUTPUT.PUT_LINE(V_EMP.ename||' '||V_EMP.empno||' '||V_EMP.job||' '||V_EMP.job);
END LOOP;
CLOSE V_REF_CUR;
END;
-----%ROWTYPE
set serveroutput on;
DECLARE
customer_rec emp%rowtype;
BEGIN
SELECT * into customer_rec
FROM emp
WHERE EMPNO = 7654;
dbms_output.put_line('Customer ID: ' || customer_rec.EMPNO);
dbms_output.put_line('Customer Name: ' || customer_rec.Ename);
dbms_output.put_line('Customer JOB: ' || customer_rec.JOB);
dbms_output.put_line('Customer Salary: ' || customer_rec.sal);
END;
------IF ELSE
SET SERVEROUTPUT ON;
DECLARE
l_start INTEGER:= 60;
BEGIN
IF l_start > 100 THEN
l_start := 0.2 * l_start;
ELSIF l_start >= 50 THEN
l_start := 0.5 * l_start;
ELSE
l_start := 0.1 * l_start;
END IF;
dbms_output.put_line('l_start : '||l_start);
END;
DECLARE
l_grade CHAR(1) :='&p_grade';
l_appraisal VARCHAR2(20);
BEGIN
l_appraisal :=
CASE
WHEN l_grade='A' THEN 'Excellent'
WHEN l_grade='B' THEN 'Very Good'
WHEN l_grade='C' THEN 'Good'
ELSE 'No such grade'
END;
DBMS_OUTPUT.PUT_LINE ('Grade: '|| l_grade || ' Appraisal ' || l_appraisal);
END;
-----loop
SELECT * FROM EMPLOYEE;
DECLARE
EMPP INTEGER;
BEGIN
SELECT COUNT(*) INTO EMPP FROM employee WHERE deptid=10;
LOOP
DBMS_OUTPUT.PUT_LINE ('EMPP '||EMPP);
EXIT WHEN EMPP=0;
EMPP:=EMPP-1;
END LOOP;
END;
-----------while loop
DECLARE
EMPP INTEGER;
BEGIN
SELECT COUNT(*) INTO EMPP FROM employee WHERE deptid=10;
while EMPP>=0
LOOP
DBMS_OUTPUT.PUT_LINE ('EMPP '||EMPP);
EMPP:=EMPP-1;
END LOOP;
END;
-------------------FOR LOOP
DECLARE
EMPP INTEGER;
BEGIN
SELECT COUNT(*) INTO EMPP FROM employee WHERE deptid=10;
FOR i IN 0..EMPP
LOOP
DBMS_OUTPUT.PUT_LINE ('EMPP '||EMPP);
EMPP:=EMPP-1;
END LOOP;
END;
set SERVEROUTPUT ON; ----1procedure
CREATE OR REPLACE PROCEDURE greetings
AS
BEGIN
dbms_output.put_line('Hello World!');
END;
EXECUTE greetings;
begin
greetings;
end;
----2procedure
CREATE OR REPLACE PROCEDURE welcome_msg (p_name IN VARCHAR2)
AS
BEGIN
dbms_output.put_line('Welcome '||p_name);
END welcome_msg;
declare
p_name VARCHAR2(20);
BEGIN
--p_name:='&n';
welcome_msg ('&p_name');
ENd;
-----------------3procedure
create PROCEDURE findMin(x IN number, y IN number, z OUT number) IS
BEGIN
IF x < y THEN
z:= x;
ELSE
z:= y;
END IF;
END;
declare
x integer;
y integer;
z integer;
BEGIN
x:= 23;
y:= 45;
findMin(x,y,z);
dbms_output.put_line(' Minimum of (23, 45) : ' || z);
END;
------4procedure
select * from customer_table;
CREATE OR REPLACE PROCEDURE print_contact(
P_customer_id NUMBER )
IS
r_contact customer_table%ROWTYPE;
BEGIN
-- get contact based on customer id
SELECT *
INTO r_contact
FROM customer_table
WHERE custid = p_customer_id;
dbms_output.put_line( r_contact.firstname || ' ' ||
r_contact.lastname || '<' || r_contact.on_board_date ||'>' );
EXCEPTION
WHEN OTHERS THEN
dbms_output.put_line( SQLERRM );
END;
execute print_contact(10);
RETURN total;
END;
DECLARE
c number(2);
BEGIN
c := totalCustomers();
dbms_output.put_line('Total no. of Customers: ' || c);
END;
------ PACKAGE
CREATE PACKAGE cust_sal AS
PROCEDURE print_contact(
P_customer_id NUMBER );
FUNCTION totalCustomers
RETURN number ;
END cust_sal;