-- Execute statement ini sekali saja :
SET SERVEROUTPUT ON;
-- Source pembuatan Procedure hello (contoh while)
CREATE OR REPLACE PROCEDURE hello (jml IN NUMBER) IS
teks VARCHAR2(20) := 'Hello World';
i NUMBER(3) := 1;
BEGIN
WHILE i <= jml LOOP
DBMS_OUTPUT.put_line(i || ' ' || teks);
i := i+1;
END LOOP;
END;
-- contoh pemanggilan procedure
EXECUTE hello(5);
-- contoh blok PL/SQL Procedure untuk menaikkan gaji
-- menggunakan kondisional
CREATE OR REPLACE PROCEDURE naikkan_gaji IS
BEGIN
DBMS_OUTPUT.put_line ('Kenaikan Gaji Baru:');
FOR t IN (SELECT * FROM emp)
LOOP
IF (t.sal > 1500) THEN
DBMS_OUTPUT.put_line(t.sal+(0.1 * t.sal));
ELSE
DBMS_OUTPUT.put_line(t.sal+(0.15 * t.sal));
END IF;
END LOOP;
END;
-- contoh pemanggilan procedure
EXECUTE naikkan_gaji
-- contoh FUNCTION
CREATE OR REPLACE FUNCTION luas_segitiga(
alas IN FLOAT,
tinggi IN FLOAT)
RETURN FLOAT
IS
BEGIN
RETURN 0.5 * alas * tinggi;
END;
-- contoh penggunaan function :
SELECT luas_segitiga(4,7) FROM dual;
-- Source PL/SQL Anonymous Block, non Procedure/Function
DECLARE
gaji emp.sal%TYPE;
BEGIN
SELECT sal INTO gaji
FROM emp WHERE empno = &kode_pegawai;
IF gaji > 1500 THEN
DBMS_OUTPUT.put_line('Gajinya besar, yaitu '||gaji);
ELSE
DBMS_OUTPUT.put_line('Gajinya kecil, yaitu '||gaji);
END IF;
END;
-- SCHEMA : HR. Bukan SCOTT.
-- Function untuk mendeteksi standar gaji
CREATE OR REPLACE FUNCTION standargaji(gaji IN NUMBER)
RETURN VARCHAR2 IS
BEGIN
IF gaji >= 10000 THEN
RETURN 'Tinggi';
ELSE
RETURN 'Biasa';
END IF;
END;
-- contoh penggunaan function standargaji
SELECT standargaji(11000) FROM dual;
SELECT
employee_id,
first_name,
last_name,
salary,
standargaji(salary) AS standar_gaji
FROM employees;
Comments
0 B
|👍
/👎
0 B
|👍
/👎