Rumah >pangkalan data >Oracle >Apakah kursor prosedur tersimpan Oracle?

Apakah kursor prosedur tersimpan Oracle?

WBOY
WBOYasal
2022-02-28 11:05:398256semak imbas

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.

Apakah kursor prosedur tersimpan Oracle?

Persekitaran pengendalian tutorial ini: sistem Windows 10, versi Oracle 11g, komputer Dell G3.

Apakah kursor prosedur tersimpan Oracle?

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!

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