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.
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 prosedurBERMULA
--声明变量 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 pengecualianBERMULA
--声明变量 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!