Oracle
 sql >> Teknologi Basis Data >  >> RDS >> Oracle

4 Contoh Blok Anonim PL/SQL

Dalam tutorial ini, saya memberikan 4 contoh blok anonim PL/SQL, sehingga Anda dapat mempelajari cara membuat dan menggunakan blok anonim di database Oracle. Blok anonim di PL/SQL adalah program yang tidak memiliki pernyataan Create Procedure atau Create Function, dan tidak disimpan dalam database Oracle. Blok anonim PL/SQL sebagian besar digunakan untuk menguji atau menjalankan program di database Oracle hanya untuk satu kali.

1. Blok Anonim PL/SQL Untuk Mencetak Angka dalam Urutan Terbalik

Program PL/SQL berikut akan mencetak angka 0 sampai 10 dalam urutan terbalik, menggunakan klausa REVERSE di for loop.

SET SERVEROUTPUT ON;
DECLARE
  counter   NUMBER;
BEGIN
  FOR counter IN REVERSE 0..10 LOOP
    DBMS_OUTPUT.PUT_LINE (counter);
  END LOOP;
END;
/

Keluaran

10
9
8
7
6
5
4
3
2
1
0
PL/SQL procedure successfully completed.

2. Cetak Jumlah Karyawan di Departemen

Program PL/SQL berikut akan menghitung karyawan di departemen 90. Tabel ini berasal dari skema SDM database Oracle. Anda dapat mengunduh skema ini dari tautan berikut Unduh Skema HR.

SET SERVEROUTPUT ON;

DECLARE
   emp_count         NUMBER;
   v_department_id   NUMBER := 90;
BEGIN
   SELECT COUNT ( * )
     INTO emp_count
     FROM employees
    WHERE department_id = v_department_id;

   DBMS_OUTPUT.PUT_LINE(   'The employee count is: '
                        || emp_count
                        || ' for the department with an ID of: '
                        || v_department_id);
END;
/

Keluaran

The employee count is: 3 for the department with an ID of: 90
PL/SQL procedure successfully completed.

3. Ambil Input di Blok Anonim PL/SQL dan Cetak

Pada contoh di bawah ini, ia akan meminta input dari pengguna untuk id departemen dan akan mencetak jumlah karyawan di departemen itu, dan juga akan mencetak nama departemen.

SET SERVEROUTPUT ON;

DECLARE
   dept_id_var   NUMBER (4) := &department_id;
   dept_name     VARCHAR2 (30);
   emp_count     NUMBER;
BEGIN
   SELECT COUNT ( * )
     INTO emp_count
     FROM employees
    WHERE department_id = dept_id_var;

   SELECT department_name
     INTO dept_name
     FROM departments
    WHERE department_id = dept_id_var;

   DBMS_OUTPUT.PUT_LINE(   'There are '
                        || emp_count
                        || ' employees '
                        || 'in the '
                        || dept_name
                        || ' department.');
END;
/

Keluaran

Enter value for department_id: 60
old   2:   dept_id_var  NUMBER(4) := &department_id;
new   2:   dept_id_var  NUMBER(4) := 60;
There are 4 employees in the IT department.

PL/SQL procedure successfully completed.

4. Blok PL/SQL Dengan <> Contoh

Blok PL/SQL berikut menggunakan label untuk blok induk dan anak. Blok anak akan mengakses variabel blok induk dengan menggunakan referensi label dari blok induk. Program akan memperbarui id manajer lama dengan id manajer baru untuk departemen.

SET SERVEROUTPUT ON;
<<outer_block>>
DECLARE
   mgr_id       NUMBER (6) := '&current_manager_id';
   dept_count   NUMBER := 0;
BEGIN
   SELECT COUNT ( * )
     INTO dept_count
     FROM departments
    WHERE manager_id = outer_block.mgr_id;

   IF dept_count > 0
   THEN
     <<inner_block>>
      DECLARE
         dept_name   VARCHAR2 (30);
         mgr_id      NUMBER (6) := '&new_manager_id';
      BEGIN
         SELECT department_name
           INTO dept_name
           FROM departments
          WHERE manager_id = outer_block.mgr_id;

         UPDATE departments
            SET manager_id = inner_block.mgr_id
          WHERE manager_id = outer_block.mgr_id;

         DBMS_OUTPUT.PUT_LINE (
            'Department manager ID has been changed for ' || dept_name);
      END inner_block;
   ELSE
      DBMS_OUTPUT.PUT_LINE (
         'There are no departments listed for the manager');
   END IF;
EXCEPTION
   WHEN NO_DATA_FOUND
   THEN
      DBMS_OUTPUT.PUT_LINE (
         'There are no departments listed for the manager');
END outer_block;
/

Keluaran

Enter value for current_manager_id: 100
old 3: mgr_id NUMBER (6) := '&current_manager_id';
new 3: mgr_id NUMBER (6) := '100';
Enter value for new_manager_id: 201
old 16: mgr_id NUMBER (6) := '&new_manager_id';
new 16: mgr_id NUMBER (6) := '201';
Department manager ID has been changed for Executive

PL/SQL procedure successfully completed.

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Perintah Cadangan RMAN

  2. Cara Menginstal Oracle Express Edition untuk Latihan SQL

  3. Lari Pemeriksa

  4. Memulai Pengembang Oracle SQL di MacOSX

  5. Cara Membuat Prosedur Di Dalam Paket di Oracle