Programalama > DATABASE

Etiketler: explycyt, cursors

Ort. 0
Puan ver:
		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;








elİf güler
elif_rose@hotmail.com


Yorumlar                 Yorum Yaz
Bu hazır kod'a ilk yorumu siz yapın!
KATEGORİLER
ASP - 240
ASP.NET - 24
C# - 75
C++ - 174
CGI - 8
DELPHI - 247
FLASH - 49
HTML - 536
PASCAL - 246
PERL - 11
PHP - 160
WML - 9
XML - 2
Copyright © 2002 - 2024 Hazır Kod - Tüm Hakları Saklıdır.
Siteden yararlanırken gizlilik ilkelerini okumanızı tavsiye ederiz.
hazirkod.com bir İSOBİL projesidir.