Perbezaan: 1. Prosedur tersimpan digunakan untuk menyelesaikan operasi atau tugas tertentu dalam pangkalan data, manakala fungsi digunakan untuk data tertentu 2. Pengepala program prosedur tersimpan diisytiharkan dengan PROSEDUR, dan tiada jenis pemulangan diperlukan semasa mengisytiharkan Pengepala program fungsi diisytiharkan dengan FUNCTION, dan jenis pulangan mesti diterangkan semasa mengisytiharkan.
Persekitaran pengendalian tutorial ini: sistem Windows 7, versi Oracle 11g, komputer Dell G3.
Prosedur Tersimpan
Prosedur Tersimpan (Prosedur Tersimpan) ialah satu set pernyataan SQL untuk melengkapkan fungsi tertentu, yang disusun dan disimpan dalam tengah pangkalan data. Pengguna melaksanakan prosedur tersimpan dengan menyatakan namanya dan memberikan parameter (jika prosedur tersimpan mempunyai parameter). Prosedur tersimpan adalah objek penting dalam pangkalan data, dan mana-mana aplikasi pangkalan data yang direka bentuk dengan baik harus menggunakan prosedur tersimpan. Prosedur tersimpan ialah prosedur yang ditulis oleh kawalan aliran dan pernyataan SQL Prosedur ini disusun dan dioptimumkan dan disimpan dalam pelayan pangkalan data Ia hanya perlu dipanggil apabila program aplikasi menggunakannya. Dalam ORACLE, beberapa prosedur berkaitan boleh digabungkan bersama untuk membentuk pakej program.
Kelebihan:
1. Prosedur tersimpan hanya disusun apabila ia dibuat Tidak perlu menyusun semula setiap kali prosedur tersimpan dilaksanakan pada masa hadapan, manakala pernyataan SQL umum dilaksanakan setiap kali Ia disusun sekali, jadi menggunakan prosedur tersimpan boleh meningkatkan kelajuan pelaksanaan pangkalan data.
2. Apabila melakukan operasi kompleks pada pangkalan data (seperti Kemas Kini, Sisip, Pertanyaan dan Padam pada berbilang jadual), operasi kompleks ini boleh dirangkumkan dalam prosedur tersimpan dan digabungkan dengan pemprosesan transaksi yang disediakan oleh penggunaan pangkalan data.
3. Prosedur tersimpan boleh digunakan semula, yang boleh mengurangkan beban kerja pembangun pangkalan data.
4. Keselamatan tinggi, anda boleh menetapkan bahawa hanya pengguna tertentu yang berhak menggunakan proses tersimpan yang ditentukan.
Perbezaan antara prosedur dan fungsi tersimpan
Perbezaan terbesar antara keduanya ialah:
1 ). mengembalikan nilai , dan tiada had pada bilangan nilai untuk parameter output prosedur yang disimpan.
Dari sudut aplikasi umum, jika anda tidak memerlukan nilai pulangan atau memerlukan berbilang nilai pulangan, gunakan prosedur tersimpan Jika anda hanya menggunakan satu nilai pulangan, gunakan fungsi.
2. Hanya terdapat pernyataan DDL (seperti pilih, dsb.) dalam definisi fungsi; Pertanyaan, dan Padam pada berbilang jadual) ).
Jika anda ingin menggunakan set hasil pilih, anda perlu menggunakan kursor
存储过程 |
函数 |
用于在数据库中完成特定的操作或任务(如插入、删除等) |
用于特定数据(如查询返回值) |
程序头部声明用PROCEDURE |
程序头部声明用FUNCTION |
程序头部声明时不需要返回类型 |
程序头部声明时要描述返回类型,而且PL/SQL块至少要包括一个有效的RETURN语句 |
可以使用IN/OUT/IN OUT3种参数模式 |
可以使用IN/OUT/IN OUT3种参数模式 |
可以作为独立的PL/SQL语句执行 |
不能独立执行,必须作为表达式的一部分调用 |
可以通过OUT/IN OUT返回零个或多个值 |
对过RETURN语句返回一个值,且该值与声明部分一致,也可以通过OUT类型的参数带出变量 |
SQL语句(DML或SELECT)中不可以调用存储过程 |
SQL语句(DML或SELECT)中可以调用函数 |
Prosedur tersimpan
Fungsi
Fungsi boleh dipanggil dalam pernyataan SQL (DML atau SELECT)
Contoh sebenar
1 Fungsi
(1) Cipta fungsi
create or replace function get_salary( dept_no number, emp_count **out** number) return number IS v_sum number;begin ...exception ...end get_salary
(2) Fungsi panggilan
declare v_num number; v_sum number;begin ...(这里应该出现函数名表示调用)end
2. Prosedur tersimpan
(1) Buat prosedur tersimpan
create or replace procedure pro_demo( dept_no number default 10, sal_sum out number, emp_count out number) IS begin ... exception ... end proc_demo;
(2) Prosedur tersimpan panggilan
Sintaks panggilan:
1), jalankan
2), jalankan
3 ), dipanggil terus dalam blok pernyataan PL/SQL.
Contohnya:
declare v_num number; v_sum number(8,2); begin procedure pro_demo(dept_no=>1,sal_num=>900,emp_count=>10)(这里出现存储过程名表示调用,传递参数值用=>) end;
3 Prosedur tersimpan setempat
Dalam PL/SQL, anda juga boleh mencipta prosedur tersimpan setempat dalam Mengisytiharkan blok Daripada menggunakan kata kunci buat, tujuannya adalah untuk mengelakkan menyimpan prosedur tersimpan dalam pangkalan data dan mengelakkan masalah yang disebabkan semasa menukar pangkalan data Senario penggunaan utamanya adalah untuk menggunakan prosedur tersimpan dan bukannya mengulanginya berkali-kali masa hadapan yang digunakan.
Contoh:
declare v_num number; v_sum number(8,2); procedure proc_demo( dept_no number default 10, sal_sum out number, emp_count out number) IS begin ...(这里不用出现存储过程名) exception ... end proc_demo;
Tutorial yang disyorkan: "Tutorial Oracle"
Atas ialah kandungan terperinci Apakah perbezaan antara prosedur tersimpan dan fungsi dalam oracle. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!