apa itu kursor oracle
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.
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;
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 语句;
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 游标名( 参数 列表);
Dapatkan rekod: Gerakkan kursor untuk mendapatkan rekod
Fetch 游标名InTo 临时记录或属性类型变量;
Tutup kursor: Letakkan kursor ke dalam kumpulan penimbal tanpa melepaskan sumber sepenuhnya. Boleh dibuka semula.
Close 游标名;
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;
Gelung Kursor
。。。 Loop Fatch 游标名InTo 临时记录或属性类型变量; Exit When 游标名%NotFound; End Loop; 。。。
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; /
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; /
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; /
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 更新列列名];
⑵Gunakan rekod semasa kursor paparan untuk mengemas kini atau memadam:
Update 表名 SET 更新语句 Where Current Of 游标名; Delete From 表名 Where Current Of 游标名;
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; /
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;/
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语句;
参数形式:
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||' '||varA.empno||' '||varA.ename||' '||varA.sal); End Loop; End;/
推荐教程:《Oracle教程》
Atas ialah kandungan terperinci apa itu kursor oracle. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas



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_

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.

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.

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.

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.

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.

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.

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.
