Sebuah SELECT INTO
pernyataan akan menimbulkan kesalahan jika mengembalikan apa pun selain 1 baris. Jika mengembalikan 0 baris, Anda akan mendapatkan no_data_found
pengecualian. Jika mengembalikan lebih dari 1 baris, Anda akan mendapatkan too_many_rows
pengecualian. Kecuali Anda tahu bahwa akan selalu ada tepat 1 karyawan dengan gaji lebih besar dari 3000, Anda tidak ingin SELECT INTO
pernyataan di sini.
Kemungkinan besar, Anda ingin menggunakan kursor untuk mengulangi (berpotensi) beberapa baris data (saya juga berasumsi bahwa Anda bermaksud melakukan penggabungan yang tepat antara dua tabel daripada melakukan produk Cartesian jadi saya berasumsi bahwa ada adalah departmentID
kolom di kedua tabel)
BEGIN
FOR rec IN (SELECT EMPLOYEE.EMPID,
EMPLOYEE.ENAME,
EMPLOYEE.DESIGNATION,
EMPLOYEE.SALARY,
DEPARTMENT.DEPT_NAME
FROM EMPLOYEE,
DEPARTMENT
WHERE employee.departmentID = department.departmentID
AND EMPLOYEE.SALARY > 3000)
LOOP
DBMS_OUTPUT.PUT_LINE ('Employee Nnumber: ' || rec.EMPID);
DBMS_OUTPUT.PUT_LINE ('---------------------------------------------------');
DBMS_OUTPUT.PUT_LINE ('Employee Name: ' || rec.ENAME);
DBMS_OUTPUT.PUT_LINE ('---------------------------------------------------');
DBMS_OUTPUT.PUT_LINE ('Employee Designation: ' || rec.DESIGNATION);
DBMS_OUTPUT.PUT_LINE ('----------------------------------------------------');
DBMS_OUTPUT.PUT_LINE ('Employee Salary: ' || rec.SALARY);
DBMS_OUTPUT.PUT_LINE ('----------------------------------------------------');
DBMS_OUTPUT.PUT_LINE ('Employee Department: ' || rec.DEPT_NAME);
END LOOP;
END;
Saya berasumsi bahwa Anda juga baru belajar PL/SQL. Dalam kode sebenarnya, Anda tidak akan pernah menggunakan dbms_output
seperti ini dan tidak akan bergantung pada siapa pun yang melihat data yang Anda tulis ke dbms_output
penyangga.