Rumah >pangkalan data >Oracle >pernyataan sql prosedur tersimpan oracle

pernyataan sql prosedur tersimpan oracle

王林
王林asal
2023-05-07 19:32:371468semak imbas

Pangkalan data Oracle ialah sistem pengurusan pangkalan data yang cekap dengan fungsi yang kaya dan kebolehpercayaan yang sangat tinggi, dan digunakan secara meluas dalam aplikasi peringkat perusahaan. Prosedur tersimpan Oracle ialah unit program khas yang boleh menggabungkan dan menyimpan berbilang pernyataan SQL dan digunakan dalam tugas pemprosesan data harian. Artikel ini akan memperkenalkan cara menulis pernyataan SQL dalam prosedur tersimpan Oracle.

1. Mengapa menggunakan prosedur tersimpan

Apabila membangunkan aplikasi perusahaan, kami biasanya menghadapi pelbagai tugas pemprosesan data, seperti import data, pembersihan data, penukaran data, Analisis data dll. Di antara tugas-tugas ini, pernyataan SQL adalah alat yang paling penting dan boleh melakukan pelbagai operasi pemprosesan pada data. Walau bagaimanapun, untuk tugas pemprosesan data yang kompleks, berbilang pernyataan SQL mungkin perlu ditulis dan pernyataan SQL ini boleh digunakan berulang kali. Jika anda menulis pernyataan SQL secara manual setiap kali, ia bukan sahaja memakan masa dan intensif buruh, tetapi juga ralat mungkin berlaku. Pada masa ini, prosedur tersimpan boleh digunakan.

Prosedur tersimpan ialah unit program khas yang boleh menggabungkan berbilang pernyataan SQL untuk membentuk unit logik keseluruhan. Prosedur tersimpan boleh merangkum dan menggunakan semula pernyataan SQL, dengan itu memudahkan penulisan dan penyelenggaraan kod serta meningkatkan kecekapan pembangunan. Di samping itu, prosedur tersimpan juga boleh meningkatkan prestasi pangkalan data dan mengurangkan bilangan interaksi dengan pangkalan data, dengan itu mengurangkan kependaman rangkaian dan kehilangan penghantaran data.

2. Sintaks asas prosedur tersimpan

Prosedur tersimpan ditulis dalam bahasa PL/SQL. PL/SQL ialah bahasa pengaturcaraan khusus untuk pangkalan data Oracle dan menyokong pengaturcaraan berorientasikan objek dan pengaturcaraan prosedur. Prosedur tersimpan terdiri daripada tiga bahagian: bahagian pengisytiharan, bahagian badan prosedur dan bahagian pengendalian pengecualian.

  1. Bahagian pengisytiharan

ISYTIHKAN

 (变量声明部分)

MULAKAN

 (过程体部分)

PENGECUALIAN

 (异常处理部分)

TAMAT;Antaranya, "DECLARE" mewakili bahagian pengisytiharan, "BEGIN" mewakili bahagian badan prosedur, dan "EXCEPTION" mewakili bahagian pengendalian pengecualian. Dalam bahagian pengisytiharan, anda perlu mengisytiharkan pembolehubah, kursor dan struktur data lain yang diperlukan oleh prosedur supaya struktur data ini boleh digunakan dalam badan prosedur.

Bahagian badan prosedur
  1. Dalam bahagian badan prosedur, pernyataan SQL tertentu dan kod PL/SQL akan ditulis, dan pembolehubah dan pembolehubah yang diisytiharkan dalam bahagian pengisytiharan boleh digunakan Kursor dan struktur data lain. Dalam badan proses, anda boleh menggunakan pernyataan SQL untuk mengakses struktur data seperti jadual dan paparan dalam pangkalan data, dan anda boleh menggunakan objek kursor untuk menyimpan set hasil pertanyaan. Pada masa yang sama, struktur aliran kawalan juga boleh digunakan dalam badan proses untuk melaksanakan operasi seperti gelung dan cawangan. Contohnya:

BERMULA

 --声明变量
 DECLARE 
      var1 VARCHAR2(20);
 BEGIN
      --执行sql语句并存储结果
      SELECT column1 INTO var1
      FROM table1
      WHERE id=1;
      --输出结果
      dbms_output.put_line(var1);
 END;

TAMAT;

Dalam kod di atas, kami mengisytiharkan pembolehubah bernama var1 dalam bahagian pengisytiharan dan menggunakan SELECT dalam pernyataan badan prosedur untuk membuat pertanyaan data dengan id 1 dalam jadual table1, tetapkan hasil pertanyaan kepada pembolehubah var1, dan akhirnya keluarkan hasilnya. Dalam badan proses, dbms_output.put_line() juga dipanggil untuk mengeluarkan keputusan.

Bahagian pengendalian pengecualian
  1. Bahagian pengendalian pengecualian digunakan untuk mengendalikan pengecualian yang mungkin berlaku semasa pelaksanaan. Dalam bahagian pengendalian pengecualian, kata kunci "EXCEPTION" biasanya digunakan untuk menentukan jenis pengecualian dan kata kunci "WHEN" digunakan untuk menentukan jenis pengecualian dan operasi pemprosesan yang sepadan secara khusus. Contohnya:

BERMULA

 --声明变量
 DECLARE 
      var1 VARCHAR2(20);
 BEGIN
      --执行sql语句并存储结果
      SELECT column1 INTO var1
      FROM table1
      WHERE id=1;
      --输出结果
      dbms_output.put_line(var1);
 EXCEPTION
      WHEN no_data_found THEN
           dbms_output.put_line('查询结果为空');
      WHEN others THEN
           dbms_output.put_line('发生未知异常');
 END;

END;

Dalam kod di atas, apabila pernyataan SELECT tidak menanyakan sebarang hasil, pengecualian no_data_found akan dicetuskan dan "Pertanyaan result is empty" akan dikeluarkan. " mesej gesaan; apabila pengecualian lain yang tidak diketahui berlaku, pengecualian yang lain akan dicetuskan, dan mesej gesaan "Pengecualian tidak diketahui berlaku" akan dikeluarkan.

3. Contoh aplikasi prosedur tersimpan

Berikut ialah contoh praktikal yang menunjukkan cara menggunakan prosedur tersimpan untuk mengendalikan tugas pemprosesan data dalam aplikasi perusahaan:

ISYTIHKAN

 --声明变量和游标对象
 v_empno NUMBER; --员工编号
 v_ename VARCHAR2(20); --员工姓名
 v_sal NUMBER; --员工工资
 v_count NUMBER := 0; --统计变量
 CURSOR c_emp IS SELECT * FROM emp;

BERMULA

 FOR emp_rec IN c_emp LOOP
      v_empno := emp_rec.empno;
      v_ename := emp_rec.ename;
      v_sal   := emp_rec.sal;
      
      --如果工资低于2000,将工资增加1000
      IF v_sal<2000 THEN
           UPDATE emp SET sal=sal+1000 WHERE empno=v_empno;
           v_count := v_count + 1;
      END IF;
 END LOOP;
 
 --输出处理结果
 dbms_output.put_line('共更新了'||v_count||'行数据');

KECUALI

 WHEN others THEN
      dbms_output.put_line('发生异常:'||SQLERRM);

TAMAT;

Dalam kod di atas, kami mula-mula mengisytiharkan beberapa pembolehubah dan objek kursor, yang digunakan dalam badan prosedur Gelung FOR merentasi semua rekod dalam jadual emp. Untuk setiap rekod, tentukan sama ada gaji pekerja kurang daripada 2000, jika ya, naikkan gajinya sebanyak 1000, dan akhirnya kembalikan bilangan baris yang berjaya dikemas kini. Dalam bahagian pengendalian pengecualian, kendalikan situasi pengecualian yang mungkin timbul. Contoh ini hanya menunjukkan cara menggunakan prosedur tersimpan untuk menulis pernyataan SQL untuk memproses data Dalam aplikasi sebenar, operasi yang lebih kompleks boleh dilakukan mengikut keperluan.

Ringkasan:

Artikel ini memperkenalkan secara ringkas konsep dan sintaks asas prosedur tersimpan Oracle, terutamanya cara menulis pernyataan SQL untuk melaksanakan tugas pemprosesan data. Prosedur tersimpan boleh merangkum dan menggunakan semula pernyataan SQL, dengan itu memudahkan penulisan dan penyelenggaraan kod serta meningkatkan kecekapan pembangunan. Di samping itu, prosedur tersimpan juga boleh meningkatkan prestasi pangkalan data dan mengurangkan bilangan interaksi dengan pangkalan data, dengan itu mengurangkan kependaman rangkaian dan kehilangan penghantaran data. Dalam pembangunan sebenar, kita perlu menulis prosedur tersimpan mengikut keperluan sebenar dan memberi perhatian kepada pengendalian pengecualian. Menggunakan prosedur tersimpan untuk menulis pernyataan SQL adalah amalan yang disyorkan untuk pemula dan pembangun berpengalaman.

Atas ialah kandungan terperinci pernyataan sql 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