Explicit CursorExplicit Cursor

Explicit Cursor

Explicit cursor’ler Fetch, Open ve Close edilebilirler.

Attributes:

Cursor İsmi Attribute Kullanımı
cur_name %found cur_name%found
cur_name %notfound cur_name%notfound
cur_name %isopen cur_name%isopen
cur_name %rowcount cur_name%rowcount

29 January 2010
Okunma
bosluk

Behavior of DML and DDL DML ve DDL işlemlerinin davranışları

DML ve DDL

DML

İşlem Nasıl İşler?
Insert Commit/Rollback
Update Commit/Rollback
Delete Commit/Rollback
Merge Commit/Rollback

DDL

İşlem Nasıl İşler?
Create Auto Commit
Alter Auto Commit
Drop Auto Commit
Truncate Auto Commit

DDL işlemleri auto commit yapar. DML işlemleri ise commit ya da rollback yapılabilir.

TCL

İşlem
Commit
Rollback
Savepoint

DCL

İşlem Nasıl İşler?
Grant Auto Commit
Revoke Auto Commit

29 January 2010
Okunma
bosluk

Force View -Normal View DifferenceForce View ve Normal view farkı

Force view , view farkı

İki view arasındaki tek fark eğer force view yaparsanız yazdığınız kod hatalı bile olsa create eder fakat invalid olarak create eder hatalıysa.

Normal view’da böyle bir durum söz konusu değil hatalıysa create işlemi yapılmaz.

Force View

CREATE OR REPLACE FORCE VIEW AKUZHAN.VIEW_DENEME
(ID,NAME)
AS
SELECT
ID
, NAME
FROM
EMPLOYEES ;

Normal View

CREATE OR REPLACE FORCE VIEW AKUZHAN.VIEW_DENEME
AS
SELECT
ID
, NAME
FROM
EMPLOYEES ;

25 January 2010
Okunma
bosluk

Raise Applicaton Error

Raise application error verirken hata kodu, hatanın kendisi, ve son parametre olarak isterseniz hatanın stack trace’ini alabilirsiniz. True göndermek yeterli.

7 January 2010
Okunma
bosluk

for x in clausePL/SQL For x in yapısı

For X in yapısı

FOR X IN

(

SELECT

MDT.CH_DAY

, MDT.CH_MONTH

, MDT.CH_YEAR

FROM

AKUZHAN.TABLE MDT

WHERE

MDT.CH_DAY IS NOT NULL

AND MDT.CH_MONTH IS NOT NULL

AND MDT.CH_YEAR IS NOT NULL

)

LOOP

V_MONTH_LOWER := LOWER(X.CH_MONTH);

CASE V_MONTH_LOWER

WHEN ‘ocak’ THEN V_MONTH := ’01′;

WHEN ‘subat’ THEN V_MONTH := ’02′;

WHEN ‘mart’ THEN V_MONTH := ’03′;

WHEN ‘nisan’ THEN V_MONTH := ’04′;

WHEN ‘mayis’ THEN V_MONTH := ’05′;

WHEN ‘haziran’ THEN V_MONTH := ’06′;

WHEN ‘temmuz’ THEN V_MONTH := ’07′;

WHEN ‘agustos’ THEN V_MONTH := ’08′;

WHEN ‘eylul’ THEN V_MONTH := ’09′;

WHEN ‘ekim’ THEN V_MONTH := ’10′;

WHEN ‘kasim’ THEN V_MONTH := ’11′;

WHEN ‘aralik’ THEN V_MONTH := ’12′;

ELSE V_MONTH := NULL;

END CASE;

END LOOP;

4 January 2010
Okunma
bosluk

Oracle Compare with nullOracle null değer ile karşılaştırma işlemleri

Herhangi bir değer ile null değer karşılaştırma vb. lojik işlemlere ya da aritmetik işlemlere tabi tutulamıyor.Aşağıdaki örnekte null sting değer ile içinde Abdullah yazan string değer karşılaştırılamıyor.

declare

v_karsilastir varchar2(10):=’abdullah’;

v_tut varchar2(5);

v_deger number;

bool boolean ;

begin

select

case

WHEN V_TUT IS NULL THEN 4

when v_tut=” then 1

when v_tut=null then 2

else 3

end

into v_deger

from dual;

dbms_output.put_line(‘değer :’||v_deger);

if v_tut<>v_karsilastir then

bool:=true;

else

bool:=false;

end if;

dbms_output.put_line(‘bool :’|| case when bool = true then ‘true’ when bool=false then ‘false’end );

end;

çözümü ise aşağıdaki gibi ya da farklı şekillerde olabilir.

declare

v_karsilastir varchar2(10):=’abdullah’;

v_tut varchar2(5);

v_deger number;

bool boolean ;

begin

select

case

WHEN V_TUT IS NULL THEN 4

when v_tut=” then 1

when v_tut=null then 2

else 3

end

into v_deger

from dual;

dbms_output.put_line(‘değer :’||v_deger);

if v_karsilastir<>nvl(v_tut,’ ‘) then

bool:=true;

else

bool:=false;

end if;

dbms_output.put_line(‘bool :’|| case when bool = true then ‘true’ when bool=false then ‘false’end );

end;

4 January 2010
Okunma
bosluk

dynamic sql parserDinamik SQL parser

Yazılan dinamik sql’in valid olup olmadığı kontrol etmek için aşağıdaki gibi bir fonksiyon kullanabilirsiniz.

CREATE OR REPLACE FUNCTION AKUZHAN.IS_VALID_QUERY

(

P_SQL VARCHAR2

)

RETURN BOOLEAN IS

V_CURSOR PLS_INTEGER;

BEGIN

V_CURSOR := DBMS_SQL.OPEN_CURSOR;

DBMS_SQL.PARSE(V_CURSOR, P_SQL, DBMS_SQL.NATIVE);

DBMS_SQL.CLOSE_CURSOR(V_CURSOR);

RETURN TRUE;

EXCEPTION WHEN OTHERS THEN

RETURN FALSE;

END;

/

4 January 2010
Okunma
bosluk

statement handle not executed Deyim tutamacı çalışmıyor hatası

Deyim tutamacı çalışmıyor hatası:

Bazı durumlarda kontrol yapılır ve arkasından bir out cursor varsa open edilir. Ya koşul sağlanmaz ve cursor içine girilmezse ne olur ? ya exception’a düşmüşsek?

Bu durumda aslında alınan hatayı deyim tutamacı çalışmıyor hatası ezer ve aslında gerçek hatayı göremezsiniz.

Bunu engellemek için

EXCEPTION

WHEN OTHERS THEN

OPEN P_CURSOR_SEARCH FOR SELECT NULL FROM DUAL;

Gibi bir yapı kullanarak aşabilirsiniz. Şimdiye kadar başınıza gelmemiş olabilir ama geldiğinde çok yardımcı olacak bir not.

İyi çalışmalar.

4 January 2010
Okunma
bosluk
 Son Yazılar FriendFeed
reklam
seo kitabı
reklam
reklam

Translate

EnglishFrenchGermanItalianPortugueseRussianSpanishTurkish