Toplam 1 adet sonuctan sayfa basi 1 ile 1 arasi kadar sonuc gösteriliyor
-
18.Ocak.2015, 01:13 #1
DATABASE / Explycyt Cursors
Pl/Sql De Explycyt Cursors Tanymlaması Nasıl Yapılır
Kod:
EXPLICIT CURSORS
TANIMLAMASI(DECLARED) VE İSİMLENDİRİLMESİ(NAMED) PROGRAMCI TARFINDAN YAPILAN CURSOR LARDIR.
SORGULAMA SONUCUNDA BİRDEN FAZLA SATIR DÖNER. CURSOR ÖZEL İFADELERLE YÖNLENDİRİLEBİLİR.
SYNTAX :
CURSOR CURSOR_NAME IS SELECT_STATEMENT;
CURSOR_NAME: PL/SQL IDENTIFIER.
SELECT_STATEMENT: SELECT İFADESİ. SELECT İFADESİ İÇERİSİNDE INTO KULLANILMAMALIDIR.
GEREKLİ OLDUĞU DURUMLARDA ORDER BY İFADESİ KULLANILABİLİR.
CURSOR TANIMLAMASINDA YAZILAN SELECT İFADESİ(SELECT_STATEMENT) SONUCUNDA DÖNEN SATIRLARLA BİR ACTIVE SET OLUŞUR.
DECLARE CURSOR TANIMLAMASINI YAPABİLECEĞİMİZ KISIMDIR.
BU KISIMDA, BİZİM TARAFIMIZDAN İSİMLENDİRİLMİŞ BİR SQL ALANI OLUŞTURUYORUZ.
OPEN AKTİF SET OLUŞTURULUR. (... SELECT * FROM EMP; SORGUSUYLA EMP TABLOSUNUN İÇERİSİNDE YER ALAN BÜTÜN KAYITLARLA YA DA SATIRLARLA BİR AKTİF SET OLUŞTURULUR.)
FETCH OLUŞTURULAN AKTİF SET TEKİ, CURSOR IN İŞARET ETTİĞİ(CURRENT ROW) SATIRDAKİ DEĞERLERİ, TANIMLANAN DEĞİŞKENLERE ATAR.
AKTİF SET TE BİR SONRAKİ SATIRIN OLUP OLMADIĞINI KONTROL EDER. BİR SONRAKİ SATIR VARSA FETCH E GERİ DÖNER.
BİR SONRAKİ SATIR YOKSA HATA MESAJI VERMEZ.
CLOSE AKTİF SETİ BOŞALTIR.
ÖRNEK1:
*********************** DECLARE
DECLARE
CURSOR EMP_CURSOR IS SELECT EMPNO,ENAME FROM EMP;
CURSOR DEPT_CURSOR IS SELECT * FROM DEPT WHERE DEPTNO=10;
BEGIN
...
END;
YA DA
DECLARE
VAR_EMPNO EMP.EMPNO%TYPE; VARIABLE(DEĞİŞKEN) TANIMLAMASI, CURSOR İFADESİNDEN ÖNCE YAPILMALIDIR.
VAR_ENAME EMP.ENAME%TYPE;
CURSOR EMP_CURSOR IS SELECT EMPNO,ENAME FROM EMP;
BEGIN
...
END;
*********************** OPEN
SYNTAX
OPEN CURSOR_NAME;
*********************** FETCH
SYNTAX
FETCH CURSOR_NAME INTO [DEĞİŞKEN1, DEĞİŞKEN2, ...| RECORD_NAME];
EĞER DECLARE KISMINDA DEĞİŞKEN TANIMLARKEN, %TYPE DEĞİLDE %ROWTYPE KULLANIRSA
(VAR_EMP EMP%ROWTYPE; ŞEKLİNDE), RECORD_NAME İ KULLANABİLİRİZ.
BURADA DİKKAT EDİLMESİ GEREKEN CURSOR IN İŞARET ETTİĞİ SATIRDA
YER ALAN ALANLARIN(... SELECT EMPNO,ENAME İFADESİNDEKİ EMPNO VE ENAME) DOĞRU DEĞİŞKENLERE ATANMASIDIR.
DEĞİŞKENLERİN SAYISINA VE SIRASINADA DİKKAT EDİLMELİDİR.
FETCH EMP_CURSOR INTO VAR_EMPNO,VAR_ENAME;
ÖRNEK2:
DECLARE
VAR_EMPNO EMP.EMPNO%TYPE;
VAR_ENAME EMP.ENAME%TYPE;
CURSOR EMP_CURSOR IS SELECT EMPNO,ENAME FROM EMP;
BEGIN
OPEN EMP_CURSOR;
FOR I IN 1..5 LOOP
FETCH EMP_CURSOR INTO VAR_EMPNO,VAR_ENAME;
END LOOP
END;
*********************** CLOSE
SYNTAX
CLOSE CURSOR_NAME;
ÖRNEK3:
SET SERVEROUTPUT ON
DECLARE
VAR_EMPNO EMP.EMPNO%TYPE;
VAR_ENAME EMP.ENAME%TYPE;
CURSOR EMP_CURSOR IS SELECT EMPNO,ENAME FROM EMP;
BEGIN
OPEN EMP_CURSOR;
FOR I IN 1..5 LOOP
FETCH EMP_CURSOR INTO VAR_EMPNO,VAR_ENAME;
DBMS_OUTPUT.PUT_LINE('EMP NO :'||VAR_EMPNO);
DBMS_OUTPUT.PUT_LINE('EMP NAME :'||VAR_ENAME);
DBMS_OUTPUT.PUT_LINE('********************');
END LOOP;
CLOSE EMP_CURSOR;
END;
Bir önceki yazı DATABASE / Toplam Çarpım hakkında bilgi vermektedir.
Konu Bilgileri
Bu Konuya Gözatan Kullanıcılar
Şu anda 1 kullanıcı bu konuyu görüntülüyor. (0 kayıtlı ve 1 misafir)
Benzer Konular
-
DATABASE / Explycyt Cursors
Konu Sahibi megatron Forum MySQLCevap: 0Son Mesaj : 18.Ocak.2015, 01:01 -
Mysql Database Listele Nasıl Olur?
Konu Sahibi megatron Forum MySQLCevap: 0Son Mesaj : 18.Ocak.2015, 00:44 -
WML / Çok Basit Database Baglantisi Olmayan Hit Sayaci
Konu Sahibi optimusprime Forum Web Programlama DilleriCevap: 0Son Mesaj : 15.Aralık.2014, 21:10 -
Veritabanı (Database) Terimleri Hakkında
Konu Sahibi optimusprime Forum Veritabanı ProgramlamaCevap: 0Son Mesaj : 05.Aralık.2014, 15:54 -
VBulletinde'de Veritabanı - Database nedir?
Konu Sahibi kazanova21641 Forum vBulletinCevap: 0Son Mesaj : 14.Ekim.2014, 22:22
Shopsocks5 - Service Socks5 Cheap...
11.Mayıs.2024, 15:00 in Güvenlik