Rumah  >  Artikel  >  pangkalan data  >  Apakah perbezaan antara prosedur tersimpan dan fungsi dalam oracle

Apakah perbezaan antara prosedur tersimpan dan fungsi dalam oracle

青灯夜游
青灯夜游asal
2022-02-22 18:38:558855semak imbas

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.

Apakah perbezaan antara prosedur tersimpan dan fungsi dalam oracle

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

Jenis pemulangan tidak diperlukan apabila diisytiharkan dalam pengepala programAnda boleh menggunakan 3 mod parameter IN/OUT/IN OUT
存储过程与函数的区别

存储过程

函数

用于在数据库中完成特定的操作或任务(如插入、删除等)

用于特定数据(如查询返回值)

程序头部声明用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)中可以调用函数

Perbezaan antara prosedur dan fungsi yang disimpan

Prosedur tersimpan

Fungsi

Digunakan untuk menyelesaikan operasi atau tugas tertentu dalam pangkalan data (seperti sisipan, pemadaman, dll.) Digunakan untuk data tertentu (seperti nilai pulangan pertanyaan)
Pengepala program diisytiharkan dengan PROSEDUR td> Pengepala program diisytiharkan dengan FUNCTION
Jenis pemulangan mesti diterangkan dalam pengisytiharan pengepala program dan PL/SQL blok mesti mengandungi sekurang-kurangnya satu penyata RETURN yang sah
Anda boleh menggunakan IN /OUT/IN OUT 3 mod parameter
Boleh dilaksanakan sebagai pernyataan PL/SQL bebas Tidak boleh dilaksanakan secara bebas, mesti Dipanggil sebagai sebahagian daripada ungkapan
boleh dikembalikan melalui OUT/IN OUT Zero atau lebih nilai Penyata RETURN mengembalikan nilai, dan nilai itu konsisten dengan bahagian pengisytiharan, atau ia boleh dihantar melalui jenis OUT Parameter membawa keluar pembolehubah
Pernyataan SQL (DML atau SELECT) Prosedur tersimpan tidak boleh dipanggil

Fungsi boleh dipanggil dalam pernyataan SQL (DML atau SELECT)

Apakah perbezaan antara prosedur tersimpan dan fungsi dalam oracle

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!

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