Rumah pangkalan data Oracle apa itu kursor oracle

apa itu kursor oracle

Feb 23, 2022 am 11:35 AM
oracle kursor

Dalam Oracle, kursor ialah mekanisme yang menggunakan kata kunci CURSOR untuk mentakrifkan set data yang ditanya oleh Oracle Set data yang ditanya boleh disimpan dalam memori, dan kemudian kursor menghala ke salah satu data Rekod, melalui kursor gelung untuk mencapai tujuan menggelung set data.

apa itu kursor oracle

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

Dalam Oracle, kursor ialah mekanisme yang mana nama boleh diberikan kepada pernyataan SELECT dan maklumat dalam pernyataan SQL tersebut boleh diproses.

Kursor Oracle mentakrifkan set set data yang ditanya oleh Oracle melalui kata kunci CURSOR Sama seperti tatasusunan, set data yang ditanya disimpan dalam memori, dan kemudian kursor menghala ke salah satu rekod, dan kursor digelung Mencapai tujuan menggelung set data.

Apakah fungsi kursor?

①Nyatakan kedudukan baris tertentu dalam set hasil.

②Dapatkan satu baris atau beberapa baris berturut-turut berdasarkan kedudukan set hasil semasa.

③ Ubah suai data dalam baris pada kedudukan semasa set hasil.

④ Tentukan tahap sensitiviti yang berbeza untuk perubahan data yang dibuat oleh pengguna lain.

⑤Pangkalan data boleh diakses secara pengaturcaraan.

Jenis kursor Oracle?

1. Kursor statik: kursor yang set keputusannya telah disahkan (ditakrifkan secara statik). Terbahagi kepada kursor tersirat dan eksplisit

  • Kursor tersirat: Semua pernyataan DML ialah kursor tersirat dan maklumat pernyataan SQL boleh diperoleh melalui atribut kursor tersirat.

  • Tunjukkan kursor: Pengguna memaparkan kursor yang diisytiharkan, iaitu set hasil yang ditentukan. Apabila pertanyaan mengembalikan lebih daripada satu baris hasil, kursor eksplisit diperlukan.

2. Kursor REF: objek sementara yang mengaitkan set hasil secara dinamik.

Apakah status kursor Oracle dan cara menggunakan atribut kursor?

①Status kursor diwakili oleh atribut.

  • %Dijumpai: Betul atau Salah bagi status pelaksanaan pernyataan Ambil (mendapatkan rekod).

  • %NotFound: Sama ada rekod terakhir diekstrak sebagai Betul atau Palsu.

  • %ISOpen: Betul atau Palsu sama ada kursor dibuka.

  • %RowCount: Bilangan baris yang sedang diekstrak oleh kursor.

②Gunakan sifat kursor.

Contoh:

/* conn scott/tiger */
  Begin
   Update emp Set  SAL = SAL + 0.1  Where JOB = 'CLERK';
   If  SQL%Found  Then
    DBMS_OUTPUT.PUT_LINE('已经更新!');
   Else
    DBMS_OUTPUT.PUT_LINE('更新失败!');
   End  If;
  End;
Salin selepas log masuk

Bagaimana untuk menggunakan kursor paparan? Bagaimana untuk mengulangi kursor gelung?

1 Gunakan kursor paparan

  • untuk mengisytiharkan kursor: bahagikan kawasan storan Ambil perhatian bahawa pernyataan Pilih tidak dilaksanakan pada masa ini masa.

CURSOR 游标名( 参数 列表)   [返回值类型]   IS   Select 语句;
Salin selepas log masuk
  • Buka kursor: jalankan penyataan Pilih, dapatkan set hasil dan simpannya dalam kursor Pada masa ini, kursor menghala ke ketua set keputusan, bukan rekod pertama.

 Open 游标名( 参数 列表);
Salin selepas log masuk
  • Dapatkan rekod: Gerakkan kursor untuk mendapatkan rekod

Fetch  游标名InTo  临时记录或属性类型变量;
Salin selepas log masuk
  • Tutup kursor: Letakkan kursor ke dalam kumpulan penimbal tanpa melepaskan sumber sepenuhnya. Boleh dibuka semula.

Close  游标名;
Salin selepas log masuk

2. Kursor gelung traverse

  • Untuk kursor gelung

Kursor gelung tersembunyi Buka kursor, tatal secara automatik untuk mendapatkan rekod, dan buat pembolehubah jenis rekod sementara secara automatik untuk menyimpan rekod. Kursor ditutup secara automatik selepas diproses.

     For  变量名  In  游标名 
     Loop
      数据处理语句;
     End Loop;
Salin selepas log masuk
  • Gelung Kursor

     。。。
    Loop
     Fatch  游标名InTo  临时记录或属性类型变量;
     Exit  When   游标名%NotFound;
    End   Loop;
     。。。
Salin selepas log masuk

Contoh 1:

/* conn scott/tiger */
   Declare
     Cursor myCur is select empno,ename,sal from emp;
     vna varchar2(10);
     vno number(4);
     vsal number(7,2);
  Begin
     open myCur;
     fetch myCur into vno,vna,vsal;
     dbms_output.put_line(vno||'    '||vna||'    '||vsal);
     close myCur;
  End;
  /
Salin selepas log masuk

Contoh 2: Menggunakan Gelung Traverse kursor.

 /* conn scott/tiger */
  Declare
     Cursor myCur is select ename,job,sal,empno from emp;
     varE myCur%rowType;
  Begin
     if myCur%isopen = false then
        open myCur;
       dbms_output.put_line('Opening...');
     end if;
     loop
        fetch myCur into varE;
        exit when myCur%notfound;
        dbms_output.put_line(myCur%rowCount||'    '||vare.empno||'    '||vare.ename||'    '||vare.sal);
     end loop;
     if myCur%isopen then
        Close myCur;
        dbms_output.put_line('Closing...');
     end if;
  End;
  /
Salin selepas log masuk

Contoh 3: Menggunakan gelung For untuk melintasi kursor,

  /* conn scott/tiger */
  Declare
     Cursor myCur is select * from emp;
  Begin
     for varA in myCur
      loop
         dbms_output.put_line(myCur%rowCount||'    '||varA.empno||'    '||varA.ename||'  '||varA.sal);
      end loop;
  End;
  /
Salin selepas log masuk

Bagaimana untuk mengemas kini dan memadam rekod dalam kursor yang dipaparkan?

①WHERE CURRENT OF substring dalam pernyataan KEMASKINI atau PADAM secara khusus mengendalikan data terbaharu yang diambil daripada jadual untuk dilakukan operasi KEMASKINI atau PADAM.

Untuk menggunakan kaedah ini, anda mesti menggunakan subrentetan FOR UPDATE apabila mengisytiharkan kursor Apabila dialog menggunakan substring FOR UPDATE untuk membuka kursor,

Semua baris data dalam set pulangan akan. berada dalam penguncian eksklusif Peringkat baris (ROW-LEVEL), objek lain hanya boleh menanyakan baris data ini,

tidak boleh melakukan operasi KEMASKINI, PADAM atau PILIH...UNTUK KEMASKINI.

Dalam pertanyaan berbilang jadual, gunakan klausa OF untuk mengunci jadual tertentu Jika klausa OF diabaikan, baris data yang dipilih dalam semua jadual akan dikunci.

Jika baris data ini telah dikunci oleh sesi lain, maka dalam keadaan biasa ORACLE akan menunggu sehingga baris data dibuka kuncinya.

②Gunakan kemas kini atau padam:

⑴Nyatakan kemas kini atau padam kursor paparan:

   Cursor 游标名IS  SELECT 语句   For Update [ Of  更新列列名];
   Cursor 游标名IS  SELECT 语句   For Delete [ Of  更新列列名];
Salin selepas log masuk

⑵Gunakan rekod semasa kursor paparan untuk mengemas kini atau memadam:

   Update  表名   SET   更新语句  Where   Current  Of   游标名;
   Delete  From  表名   Where   Current  Of   游标名;
Salin selepas log masuk

Contoh 1: Kemas kini rekod kursor paparan

   /*conn scott/tiger*/
   Declare
     Cursor myCur is select job from emp for update;
       vjob empa.job%type;
       rsal empa.sal%type;
    Begin
       open myCur;
       loop
          fetch myCur into vjob;
          exit when myCur%notFound;
          case  (vjob)
             when 'ANALYST' then  rsal := 0.1;
            when  'CLERK' then  rsal := 0.2;
             when  'MANAGER' then  rsal := 0.3;
             else
               rsal := 0.5;
          end case;
        update emp set sal = sal + rsal where current of myCur;
       end loop;
    End;
    /
Salin selepas log masuk

Contoh 2: Padam rekod kursor paparan

    /*conn scott/tiger
    Crate table  empa  Select * from scott.emp;
    */
    Declare
      Cursor MyCursor  Select   JOB  From  empa  For  Update;
      vSal   emp.Sal%TYPE;
    Begin
      Loop
       Fetch  MyCursor  InTo  vSal;
       Exit  When  MyCursor%NotFound;
       If   vSal < 800 Then
        Delete  From empa  Where  Cursor  Of   MyCursor;
       End  If;  
      End    Loop;
    End;/
Salin selepas log masuk

Apakah kursor paparan dengan parameter?

1. Sama seperti prosedur dan fungsi, parameter boleh dihantar ke kursor dan digunakan dalam pertanyaan.

Parameter hanya menentukan jenis data, tiada saiz (semua parameter formal dalam Oracle hanya menentukan jenis data, tiada saiz dinyatakan).

与过程不同的是,游标只能接受传递的值,而不能返回值。

  可以给参数设定一个缺省值,当没有参数值传递给游标时,就使用缺省值。

游标中定义的参数只是一个占位符,在别处引用该参数不一定可靠。

2、使用带参数的显示游标

  • 声明带参数的显示游标:

   CURSOR 游标名  [(parameter[,parameter],...)]    IS   Select语句;
Salin selepas log masuk

参数形式:

1,参数名 数据类型

2,参数名 数据类型 DEFAULT 默认值

例子:

    /*conn scott/tiger
    Crate table  empa  Select * from scott.emp;
    */
    Declare
      Cursor MyCursor(pSal  Number  Default   800)  Select   JOB  From  empa Where  SAL >  pSal ;
      varA  MyCursor%ROWTYPE;
    Begin
      Loop
       Fetch  MyCursor  InTo  varA;
       Exit  When  MyCursor%NotFound;
       DBMS_OUTPUT.PUT_LINE(MyCursor%RowCount||&#39;    &#39;||varA.empno||&#39;    &#39;||varA.ename||&#39;  &#39;||varA.sal); 
      End    Loop;
    End;/
Salin selepas log masuk

推荐教程:《Oracle教程

Atas ialah kandungan terperinci apa itu kursor oracle. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
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

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Tetapan grafik terbaik
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Cara Memperbaiki Audio Jika anda tidak dapat mendengar sesiapa
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Arahan sembang dan cara menggunakannya
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Cara memeriksa saiz meja oracle Cara memeriksa saiz meja oracle Apr 11, 2025 pm 08:15 PM

Untuk menanyakan saiz ruang meja oracle, ikuti langkah -langkah berikut: Tentukan nama meja dengan menjalankan pertanyaan: pilih Tablespace_Name dari DBA_TableSpaces; Tanya saiz meja dengan menjalankan pertanyaan: pilih jumlah (bait) sebagai total_size, jumlah (bytes_free) sebagai tersedia_space, jumlah (bytes) - jumlah (bytes_free) sebagai digunakan_space dari dba_data_files di mana tablespace_

Cara menyulitkan pandangan oracle Cara menyulitkan pandangan oracle Apr 11, 2025 pm 08:30 PM

Penyulitan Oracle View membolehkan anda menyulitkan data dalam pandangan, dengan itu meningkatkan keselamatan maklumat sensitif. Langkah -langkah termasuk: 1) mewujudkan kunci penyulitan induk (MEK); 2) mencipta pandangan yang disulitkan, menyatakan pandangan dan MEK untuk disulitkan; 3) Memberi kuasa pengguna untuk mengakses pandangan yang disulitkan. Bagaimana pandangan yang disulitkan berfungsi: Apabila permintaan pengguna untuk paparan yang disulitkan, Oracle menggunakan MEK untuk menyahsulit data, memastikan bahawa hanya pengguna yang diberi kuasa dapat mengakses data yang boleh dibaca.

Cara melihat contoh nama oracle Cara melihat contoh nama oracle Apr 11, 2025 pm 08:18 PM

Terdapat tiga cara untuk melihat nama contoh di Oracle: Gunakan "sqlplus" dan "pilih instance_name dari v $ instance;" Perintah pada baris arahan. Gunakan "pertunjukan instance_name;" Perintah dalam SQL*Plus. Semak Pembolehubah Alam Sekitar (ORACLE_SID pada Linux) melalui Pengurus Tugas Sistem Operasi, Pengurus Oracle Enterprise, atau melalui sistem operasi.

Cara mengimport pangkalan data oracle Cara mengimport pangkalan data oracle Apr 11, 2025 pm 08:06 PM

Kaedah Import Data: 1. Gunakan utiliti SQLLoader: Sediakan fail data, buat fail kawalan, dan jalankan SQLLoader; 2. Gunakan alat IMP/EXP: data eksport, data import. Petua: 1. Disyorkan SQL*loader untuk set data besar; 2. Jadual sasaran harus wujud dan perlawanan definisi lajur; 3. Selepas mengimport, integriti data perlu disahkan.

Cara menyahpasang pemasangan Oracle gagal Cara menyahpasang pemasangan Oracle gagal Apr 11, 2025 pm 08:24 PM

Nyahpasang Kaedah untuk kegagalan pemasangan Oracle: Tutup Perkhidmatan Oracle, Padam Fail Program Oracle dan Kekunci Pendaftaran, Nyahpasang pembolehubah persekitaran Oracle, dan mulakan semula komputer. Jika penyahpasang gagal, anda boleh menyahpasang secara manual menggunakan alat penyahpasang Oracle Universal.

Cara Mendapatkan Masa di Oracle Cara Mendapatkan Masa di Oracle Apr 11, 2025 pm 08:09 PM

Terdapat kaedah berikut untuk mendapatkan masa di Oracle: Current_TimeStamp: Mengembalikan masa sistem semasa, tepat untuk beberapa saat. SystimeStamp: Lebih tepat daripada Current_TimeStamp, kepada nanodekonda. SYSDATE: Mengembalikan tarikh sistem semasa, tidak termasuk bahagian masa. To_char (sysdate, 'yyy-mm-dd hh24: mi: ss'): Menukar tarikh dan masa sistem semasa ke format tertentu. Ekstrak: Ekstrak bahagian tertentu dari nilai masa, seperti tahun, bulan, atau jam.

Cara membuat Oracle Dynamic SQL Cara membuat Oracle Dynamic SQL Apr 12, 2025 am 06:06 AM

Kenyataan SQL boleh dibuat dan dilaksanakan berdasarkan input runtime dengan menggunakan SQL dinamik Oracle. Langkah -langkah termasuk: menyediakan pemboleh ubah rentetan kosong untuk menyimpan penyataan SQL yang dihasilkan secara dinamik. Gunakan pernyataan melaksanakan segera atau sediakan untuk menyusun dan melaksanakan pernyataan SQL dinamik. Gunakan pembolehubah bind untuk lulus input pengguna atau nilai dinamik lain ke SQL dinamik. Gunakan melaksanakan segera atau laksanakan untuk melaksanakan pernyataan SQL yang dinamik.

Cara Membaca Laporan Oracle AWR Cara Membaca Laporan Oracle AWR Apr 11, 2025 pm 09:45 PM

Laporan AWR adalah laporan yang memaparkan prestasi pangkalan data dan snapshot aktiviti. Langkah -langkah tafsiran termasuk: mengenal pasti tarikh dan masa snapshot aktiviti. Lihat gambaran keseluruhan aktiviti dan penggunaan sumber. Menganalisis aktiviti sesi untuk mencari jenis sesi, penggunaan sumber, dan acara menunggu. Cari kemunculan prestasi yang berpotensi seperti pernyataan SQL yang perlahan, perbalahan sumber, dan isu I/O. Lihat acara menunggu, mengenal pasti dan menyelesaikannya untuk prestasi. Menganalisis corak penggunaan selak dan memori untuk mengenal pasti isu memori yang menyebabkan masalah prestasi.

See all articles