Prosedur tersimpan dalam pangkalan data Oracle ialah atur cara tersusun yang boleh meningkatkan kecekapan operasi pangkalan data dan keselamatan data dengan banyak. Prosedur tersimpan membolehkan pengguna merangkum logik perniagaan yang kompleks ke dalam blok kod boleh panggil untuk digunakan semula dengan mudah.
Dalam pembangunan prosedur tersimpan, melaksanakan penyata SQL ialah operasi penting. Artikel ini akan memperkenalkan kaedah dan teknik prosedur tersimpan Oracle untuk melaksanakan pernyataan SQL.
Dalam prosedur tersimpan, cara paling asas untuk melaksanakan pernyataan SQL ialah menggunakan pernyataan SQL statik. Pernyataan SQL statik merujuk kepada pernyataan SQL yang ditentukan semasa menulis prosedur tersimpan dan boleh dilaksanakan secara langsung, contohnya:
CREATE OR REPLACE PROCEDURE test_proc IS BEGIN INSERT INTO test_table VALUES (1, 'test'); COMMIT; END; /
Dalam contoh di atas, pernyataan INSERT INTO statik dilaksanakan dalam prosedur tersimpan test_proc, dan data adalah Masukkan ke dalam jadual test_table.
Pernyataan SQL statik boleh memenuhi keperluan kebanyakan situasi, tetapi dalam beberapa kes tertentu, pernyataan SQL dinamik perlu digunakan. Pernyataan SQL Dinamik merujuk kepada pernyataan SQL yang dijana secara dinamik berdasarkan parameter dan maklumat lain semasa masa jalan, contohnya:
CREATE OR REPLACE PROCEDURE test_proc2(p_id NUMBER) IS v_sql VARCHAR2(200); BEGIN v_sql := 'UPDATE test_table SET name = ''new_value'' WHERE id = ' || p_id; EXECUTE IMMEDIATE v_sql; COMMIT; END; /
Dalam contoh di atas, prosedur tersimpan test_proc2 menjana pernyataan KEMASKINI dinamik berdasarkan parameter input p_id , dan menggunakan Perintah EXECUTE IMMEDIATE dilaksanakan. Perlu diingatkan bahawa apabila menggunakan pernyataan SQL dinamik, anda harus memberi perhatian kepada isu seperti suntikan SQL.
Dalam beberapa kes, adalah perlu untuk melaksanakan berbilang pernyataan SQL dalam prosedur tersimpan. Dalam Oracle, anda boleh menggunakan blok pernyataan BEGIN dan END untuk membentuk segmen kod dan memprosesnya bersama-sama. Contohnya:
CREATE OR REPLACE PROCEDURE test_proc3 IS BEGIN INSERT INTO test_table VALUES (1, 'test1'); INSERT INTO test_table VALUES (2, 'test2'); COMMIT; END; /
Dalam contoh di atas, dua penyataan INSERT INTO statik dilaksanakan dalam prosedur tersimpan test_proc3.
Dalam prosedur tersimpan, kursor boleh digunakan untuk mengembalikan set hasil pertanyaan SQL kepada kod untuk pemprosesan selanjutnya. Kursor ialah struktur data yang boleh digunakan untuk menunjuk kepada satu atau lebih baris data dalam set hasil pertanyaan SQL. Penggunaan kursor memerlukan langkah berikut:
Contohnya:
CREATE OR REPLACE PROCEDURE test_proc4 IS CURSOR c_test IS SELECT * FROM test_table; r_test c_test%ROWTYPE; BEGIN OPEN c_test; LOOP FETCH c_test INTO r_test; EXIT WHEN c_test%NOTFOUND; DBMS_OUTPUT.PUT_LINE('ID: ' || r_test.id || ', NAME: ' || r_test.name); END LOOP; CLOSE c_test; END; /
Dalam contoh di atas, pembolehubah kursor c_test diisytiharkan dalam prosedur tersimpan test_proc4 dan dibuka menggunakan pernyataan OPEN Cursor; gunakan pernyataan FETCH untuk mendapatkan baris data daripada pembolehubah kursor dan mengeluarkannya menggunakan DBMS_OUTPUT.PUT_LINE.
Pembolehubah bind ialah pembolehubah khas dalam pangkalan data Oracle yang boleh terikat kepada pernyataan SQL untuk mengelakkan SQL Injection dan isu lain untuk diperbaiki kebolehbacaan dan keselamatan kod. Penggunaan pembolehubah bind memerlukan langkah berikut:
Contohnya:
CREATE OR REPLACE PROCEDURE test_proc5(p_id NUMBER) IS v_sql VARCHAR2(200); v_name VARCHAR2(50); BEGIN v_sql := 'SELECT name FROM test_table WHERE id = :id'; EXECUTE IMMEDIATE v_sql INTO v_name USING p_id; DBMS_OUTPUT.PUT_LINE('NAME: ' || v_name); END; /
Dalam contoh di atas, pembolehubah bind digunakan dalam prosedur tersimpan test_proc5, dan parameter input p_id ialah Pembolehubah :id dalam pernyataan SQL terikat, dan pernyataan EXECUTE IMMEDIATE digunakan untuk melaksanakan pertanyaan, dan keputusan pertanyaan disimpan dalam pembolehubah v_name.
Ringkasan
Menggunakan pernyataan SQL dalam prosedur tersimpan Oracle ialah operasi yang sangat biasa Artikel ini memperkenalkan pelaksanaan pernyataan SQL statik, pernyataan SQL dinamik, berbilang pernyataan SQL, kursor dan pembolehubah bind kaedah dan teknik penyataan. Dalam pembangunan sebenar, anda perlu memilih kaedah yang paling sesuai mengikut situasi tertentu, dan memberi perhatian kepada isu keselamatan seperti suntikan SQL.
Atas ialah kandungan terperinci Oracle stored procedure execution sql. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!