Rumah >pangkalan data >Oracle >Apakah kursor prosedur tersimpan Oracle?
Dalam Oracle, kursor ialah ruang kerja memori SQL, ditakrifkan dalam bentuk pembolehubah oleh sistem atau pengguna, digunakan untuk menyimpan sementara blok data yang diekstrak daripada pangkalan data, data dipindahkan daripada pangkalan data ke pembolehubah kursor Akhirnya, aplikasi menguraikan data yang diperlukan daripada pembolehubah kursor dan memprosesnya.
Persekitaran pengendalian tutorial ini: sistem Windows 10, versi Oracle 11g, komputer Dell G3.
1. Saya melihat perenggan yang menerangkan konsep dengan sangat baik, seperti berikut:
Kursor ialah ruang kerja memori SQL, ditakrifkan dalam bentuk pembolehubah oleh sistem atau pengguna. Tujuan kursor adalah untuk menyimpan sementara blok data yang diekstrak daripada pangkalan data. Dalam sesetengah kes, adalah perlu untuk memindahkan data daripada jadual yang disimpan pada cakera ke memori komputer untuk diproses, dan akhirnya memaparkan hasil pemprosesan atau menulisnya kembali ke pangkalan data. Dengan cara ini, kelajuan pemprosesan data akan dipertingkatkan, jika tidak, pertukaran data cakera yang kerap akan mengurangkan kecekapan.
Terdapat dua jenis kursor: kursor eksplisit dan kursor tersirat. Pernyataan pertanyaan SELECT...INTO... yang digunakan dalam program yang disebutkan di atas hanya boleh mengekstrak satu baris data daripada pangkalan data pada satu masa Untuk bentuk pertanyaan dan operasi DML ini, sistem akan menggunakan kursor tersirat. Tetapi jika anda ingin mengekstrak berbilang baris data, pengaturcara mesti menentukan kursor eksplisit dan memprosesnya melalui pernyataan berkaitan kursor. Kursor eksplisit sepadan dengan pernyataan SELECT yang mengembalikan berbilang baris dan lajur.
Setelah kursor dibuka, data dipindahkan daripada pangkalan data ke pembolehubah kursor, dan kemudian aplikasi menguraikan data yang diperlukan daripada pembolehubah kursor dan memprosesnya. Dalam operasi kami memasukkan, mengemas kini, memadam dan memilih nilai ke dalam pembolehubah, kami menggunakan kursor tersirat.
Jenis nilai pengembalian atribut kursor tersirat:
SQL%ROWCOUNT Integer mewakili bilangan baris data yang berjaya dilaksanakan oleh pernyataan DML
SQL%FOUND Nilai Boolean TRUE bermaksud operasi penyisipan, pemadaman, kemas kini atau satu baris pertanyaan berjaya
SQL%NOTFOUND Nilai Boolean adalah bertentangan dengan nilai pulangan bagi Atribut SQL%FOUND
SQL%ISOPEN Boolean benar semasa pelaksanaan DML, palsu selepas selesai
2 >
3. Paparkan kursor:create or replace procedure prc_example (epo in number) as BEGIN UPDATE emp SET sal=sal+100 WHERE empno=epo; IF SQL%FOUND THEN DBMS_OUTPUT.PUT_LINE('成功修改雇员工资!'); COMMIT; ELSE DBMS_OUTPUT.PUT_LINE('修改雇员工资失败!'); END IF; END; declare e_number number; begin e_number:=7788; prc_example(e_number); end;
Gunakan kursor untuk menanyakan semua nama pekerja dengan nombor 10
Tutorial yang disyorkan: "create or replace procedure prc_example is begin declare cursor emp_sor is select ename,sal from emp where deptno=10; cname emp.ename%type; csal emp.sal%type; begin open emp_sor; loop fetch emp_sor into cname,csal; --取游标的值给变量。 dbms_output.put_line('ename:'||cname); exit when emp_sor%notfound; end loop; close emp_sor; end; end;Tutorial Video Oracle
Atas ialah kandungan terperinci Apakah kursor prosedur tersimpan Oracle?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!