Prosedur tersimpan Oracle adalah blok kod yang dikompilasi dan boleh diguna semula kerana ia membenarkan pembangun mencipta, menguji dan melaksanakan kod dalam pangkalan data tanpa perlu menyambung ke aplikasi luaran. Salah satu kelebihan utama prosedur tersimpan Oracle ialah prestasi dan keselamatan pangkalan data yang dipertingkatkan, tetapi ia memerlukan pengendalian khas apabila mereka perlu mengembalikan nilai.
Ciri nilai pulangan prosedur tersimpan adalah berdasarkan keperluan perniagaan sebenar, kerana beberapa prosedur tersimpan hanya boleh digunakan untuk mencetuskan beberapa operasi tanpa mengembalikan sebarang nilai, seperti beberapa operasi pemberitahuan dalam operasi kemas kini . Walau bagaimanapun, dalam kes lain, prosedur tersimpan mungkin perlu mengembalikan nilai mudah, seperti nombor, rentetan atau nilai Boolean, atau dalam keadaan lain pengumpulan atau jadual data.
Pertama, mari kita lihat contoh bagaimana prosedur tersimpan mengembalikan nilai tunggal:
CREATE OR REPLACE PROCEDURE get_employee_count(p_department varchar2, p_employee_count out number) IS BEGIN SELECT COUNT(*) INTO p_employee_count FROM employees WHERE department = p_department; END;
Dalam contoh ini, prosedur tersimpan menerima parameter nama jabatan dan mengembalikan jumlah bilangan pekerja dalam jabatan itu. Dalam definisi prosedur, kami menggunakan parameter OUT untuk mengembalikan hasilnya. Di bahagian utama, kami melaksanakan pertanyaan SELECT dan menyimpan keputusan dalam parameter p_employee_count.
Untuk memanggil prosedur tersimpan ini dan mendapatkan kembali nilai pulangan kita boleh menggunakan kod berikut:
DECLARE v_employee_count NUMBER; BEGIN get_employee_count('IT', v_employee_count); DBMS_OUTPUT.PUT_LINE('Total Employees in IT department:'||v_employee_count); END;
Dalam contoh ini kita mentakrifkan pembolehubah v_employee_count menggunakan blok DECLARE dan hantarkannya kepada prosedur tersimpan . Kami kemudian memanggil prosedur tersimpan dalam bahagian badan dan memaparkan keputusan dalam output.
Berkenaan menggunakan prosedur tersimpan untuk mengembalikan set hasil, kami juga boleh menggunakan teknologi jadual/kursor yang berasingan untuk mengendalikannya.
CREATE OR REPLACE TYPE Employee AS OBJECT ( employee_id NUMBER(6), first_name VARCHAR2(20), salary NUMBER(8,2) ); CREATE OR REPLACE TYPE EmployeeList AS TABLE OF Employee; CREATE OR REPLACE PROCEDURE get_employees(p_department VARCHAR2, p_employee_list OUT EmployeeList) IS BEGIN SELECT Employee(EMPLOYEE_ID, FIRST_NAME, SALARY) BULK COLLECT INTO p_employee_list FROM employees WHERE department = p_department; END; DECLARE v_employee_list EmployeeList; BEGIN get_employees('IT', v_employee_list); FOR i IN v_employee_list.first .. v_employee_list.LAST LOOP DBMS_OUTPUT.PUT_LINE(v_employee_list(i).employee_id||' - '||v_employee_list(i).first_name); END LOOP; END;
Dalam contoh ini, kami mentakrifkan jenis objek bernama Pekerja, yang mengandungi id_pekerja, nama_pertama dan atribut gaji. Kami juga mentakrifkan jenis EmployeeList, yang merupakan koleksi objek Employee. Akhir sekali, kami mencipta prosedur tersimpan get_employees yang menerima nama jabatan dan mengembalikan senarai pekerja untuk jabatan tersebut.
Dalam badan prosedur tersimpan, kami melaksanakan pertanyaan SELECT dan menggunakan pernyataan PUKAL COLLECT INTO untuk menukar set hasil menjadi objek EmployeeList.
Untuk memanggil prosedur tersimpan ini dan mendapatkan set hasil, kami boleh menggunakan kod berikut:
DECLARE v_employee_list EmployeeList; BEGIN get_employees('IT', v_employee_list); FOR i IN v_employee_list.FIRST .. v_employee_list.LAST LOOP DBMS_OUTPUT.PUT_LINE(v_employee_list(i).employee_id||' - '||v_employee_list(i).first_name||' - '||v_employee_list(i).salary); END LOOP; END;
Dalam contoh ini, kami mentakrifkan pembolehubah v_employee_list jenis EmployeeList dan hantarkannya ke prosedur Tersimpan dapatkan_pekerja. Kami kemudian menggunakan gelung FOR untuk mengulangi koleksi dan memaparkan sifat setiap objek Pekerja dalam output.
Dalam artikel ini, kami melihat cara berbeza untuk mengembalikan nilai dalam prosedur tersimpan Oracle, termasuk kaedah mengembalikan nilai individu dan set hasil. Tidak kira apa keperluan aplikasi anda, prosedur tersimpan ialah alat berkuasa yang boleh meningkatkan prestasi dan keselamatan pangkalan data sambil menyediakan blok kod yang boleh digunakan semula.
Atas ialah kandungan terperinci nilai pulangan prosedur tersimpan oracle. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!