Rumah  >  Artikel  >  pangkalan data  >  Pengenalan terperinci kepada sintaks prosedur tersimpan Oracle

Pengenalan terperinci kepada sintaks prosedur tersimpan Oracle

PHPz
PHPzasal
2023-04-18 15:23:001065semak imbas

Prosedur tersimpan Oracle ialah sekeping kod PL/SQL pra-disusun yang boleh dipanggil dan dilaksanakan apabila diperlukan. Prosedur tersimpan boleh merangkumi beberapa logik perniagaan, meningkatkan kecekapan pelaksanaan SQL, dan boleh merangkum operasi kompleks ke dalam operasi mudah dengan memanggil antara muka, meningkatkan kebolehselenggaraan dan kebolehpercayaan aplikasi pangkalan data. Artikel ini akan memperkenalkan sintaks prosedur tersimpan Oracle secara terperinci.

Buat prosedur tersimpan Oracle

Dalam Oracle, terdapat dua cara utama untuk mencipta prosedur tersimpan Satu ialah menggunakan kenyataan CREATE PROCEDURE untuk mencipta prosedur tersimpan, dan satu lagi ialah menggunakan a Alat PL/SQL untuk mencipta prosedur tersimpan.

Sintaks untuk menggunakan pernyataan CREATE PROCEDURE untuk mencipta prosedur tersimpan adalah seperti berikut:

CREATE [OR REPLACE] PROCEDURE procedure_name
(parameter_name [IN | OUT | OUT] data_type , ...)
IS
[DEKLARASI]
BERMULA
​​Penyata
[EXCEPTION]
Kenyataan pengendalian pengecualian
TAMAT [procedure_name];

Antaranya, CREATE PROCEDURE dicipta Pernyataan prosedur tersimpan, ATAU GANTI adalah kata kunci pilihan, menunjukkan bahawa jika prosedur tersimpan sudah wujud, gantikan nama_prosedur adalah nama parameter_nama adalah input dan output nama parameter prosedur tersimpan ialah jenis data parameter IS Ia adalah simbol akhir pengepala prosedur tersimpan ialah pembolehubah pilihan atau bahagian pengisytiharan tetap antara BEGIN dan END ialah badan utama prosedur tersimpan; , yang mengandungi pernyataan SQL dan kod PL/SQL.

Proses menggunakan alatan PL/SQL untuk mencipta prosedur tersimpan adalah seperti berikut:

  1. Buka PL/SQL Developer atau SQL Developer dan alatan PL/SQL yang lain
  2. Dalam "Fail" "Pilih "Baharu" dalam menu, dan kemudian pilih "Prosedur Tersimpan" dalam tetingkap baharu;
  3. Masukkan kod prosedur tersimpan dalam tetingkap;
  4. Klik butang "Simpan" untuk menyimpannya sebagai dokumentasi Proses storan.

Melalui parameter

Prosedur yang disimpan Oracle boleh menerima dan mengembalikan parameter, yang boleh menjadi parameter input, parameter output atau parameter input dan output. Parameter input ialah nilai parameter yang diluluskan dalam prosedur tersimpan, parameter output ialah nilai hasil yang dikira dalam prosedur tersimpan, dan parameter input dan output memainkan peranan parameter input dan output pada masa yang sama.

Apabila mentakrifkan parameter prosedur tersimpan, anda perlu menentukan nama parameter, jenis data dan arah parameter (MASUK, KELUAR atau KELUAR). Contohnya:

BUAT ATAU GANTIKAN PROSEDUR emp_gaji_kenaikan
(emp_id DALAM NOMBOR, naik_peratus DALAM NOMBOR, new_gaji KELUAR NOMBOR)
ADALAH
BERMULA
PILIH gaji + (gaji * ( increase_percent/100 )) INTO new_gaji DARIPADA pekerja DIMANA employee_id = emp_id;
END;

Dalam contoh ini, stored procedure emp_salary_increase menerima 3 parameter, emp_id dan increase_percent ialah parameter input, dan new_gaji ialah parameter output .

Apabila merujuk parameter prosedur tersimpan, singkatan nama prosedur tersimpan mesti ditambah sebelum nama parameter. Contohnya:

emp_salary_increase(100, 10, :new_gaji);

Dalam kod di atas, 100 dan 10 ialah nilai parameter emp_id dan increase_percent, dan :new_gaji ialah keluaran new_gaji dikira oleh nilai parameter yang disimpan.

Cawangan bersyarat dan struktur gelung

Seperti bahasa pengaturcaraan lain, prosedur tersimpan Oracle juga menyokong cawangan bersyarat dan struktur gelung. Penyata cawangan biasa termasuk penyata IF-THEN, IF-THEN-ELSE dan CASE, dan penyataan gelung termasuk penyataan WHILE dan FOR. Sintaks bagi pernyataan

IF-THEN adalah seperti berikut:

IF condition THEN
-- laksanakan blok pernyataan
END IF;

Dalam contoh ini , jika syarat Jika nilainya BENAR, blok pernyataan dilaksanakan. Sintaks bagi pernyataan

IF-THEN-ELSE adalah seperti berikut:

IF condition THEN
-- laksanakan blok pernyataan
ELSE
-- laksanakan blok pernyataan lain
TAMAT JIKA;

Dalam contoh ini, jika nilai syarat adalah BENAR, blok pernyataan pertama dilaksanakan jika tidak, blok pernyataan kedua dilaksanakan. Sintaks

penyataan KES adalah seperti berikut:

ungkapan_kes_kes
WHEN when_expression THEN

-- execute statement block

WHEN when_expression THEN

-- execute another statement block

ELSE

-- default block

END CASE;

Dalam contoh ini, case_expression ialah ungkapan perbandingan dalam pernyataan CASE dan when_expression ialah ungkapan bersyarat dalam pernyataan CASE, yang boleh mempunyai berbilang WHEN cawangan. Sintaks

WHILE loop adalah seperti berikut:

WHILE condition LOOP
-- laksanakan blok pernyataan
END LOOP;

Dalam contoh ini, the while gelung mengikut keadaan Hasil daripada gelung ungkapan melalui blok pernyataan.

Sintaks gelung FOR adalah seperti berikut:

UNTUK indeks DALAM [REVERSE] lower_bound..upper_bound LOOP
-- laksanakan blok pernyataan
END LOOP;

dalam contoh ini, indeks ialah pembolehubah integer, batas_bawah dan batas_ atas ialah nilai permulaan dan akhir gelung. Jika anda menggunakan kata kunci REVERSE, gelung berulang dari tinggi ke rendah.

Pengendalian Pengecualian

Dalam prosedur tersimpan Oracle, jika pengecualian berlaku, ia perlu dikendalikan seanggun mungkin. Jika pengendalian pengecualian tidak dipertimbangkan, prosedur tersimpan mungkin tidak dapat dilaksanakan atau pelbagai masalah mungkin berlaku.

Pengendalian pengecualian boleh diselesaikan menggunakan blok pernyataan EXCEPTION, yang mengandungi satu atau lebih blok WHEN-THEN untuk melaksanakan operasi pemprosesan yang berbeza dalam situasi pengecualian yang berbeza. Setiap blok WHEN-THEN mesti menyatakan nama pengecualian dan operasi pengendalian pengecualian yang sepadan. Contohnya:

DECLARE
 emp_id NUMBER(10);
 emp_salary NUMBER(10, 2);
BEGIN
 SELECT salary INTO emp_salary FROM employees WHERE employee_id = emp_id;
EXCEPTION
 WHEN no_data_found THEN

emp_id := NULL;

WHEN others THEN

RAISE;

END;

在这个例子中,如果SELECT语句找不到数据行,则没有找到数据的异常被捕获。异常处理程序将赋值NULL值到emp_id变量。如果有其他未知异常,则使用RAISE语句继续抛出异常。

结论

本文介绍了Oracle存储过程的语法,包括创建存储过程、参数传递、条件分支、循环结构和异常处理。了解Oracle存储过程的语法和使用方法可以让你更好地利用Oracle数据库的强大功能,提高开发效率和应用程序的可靠性。

Atas ialah kandungan terperinci Pengenalan terperinci kepada sintaks prosedur tersimpan Oracle. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn