Oracle Ders 37 – Views – 02 Complex View – 01

Merhaba Arkadaslar,
Bir onceki yazimizda Oracle ‘da View/goruntu nedir ,ne amacla kullanilir , sorularina yanit verdikten sonra Simple /Basit View yapisini incelemistik.

Bu yazimizda Complex View konusunu inceleyecegiz. Simple View konusunda inceledigimiz genel View formati Complex View icin de gecerlidir. Gramer acisindan bir fark yoktur , Simple View’in ozelliginden bahsederken en basit/temel Select sorgusundan View olusturdugumuzu expression/ifade (column1-column2), gruplama (group by) , birlestirme  (join) gibi islemlere girmedigimizden bahsetmistik.

Iste bir tablo uzerinde grouplama islemi ve/veya birden fazla tabloyu birlestirerek hatta bir expression/ifade (column1+column2 gibi) kullanarak elde ettigimiz View yapisina Complex View denilmektedir.

Simple View ile Complex View in en onemli farki ; Complex View in DML (insert ve update) islemlerine izin vermemesidir/kisitli izin vermesidir. Detaylari ornek uzerinde inceleyecegiz. DML islemlerinin Simple View uzerinde kullanimini bir onceki yazida incelemistik.

Aritmetik Ifaler ile Complex View
Expression/ifade yani iki column/alan arasinda herhangi bir matematiksel islem oldugunda ve bu yapidan bir view olusturdugumuzda dahi view , Simple View olmaktan cikar Complex View olur.

Yeni bir tablo olusturalim , bir kac kayit ekleyelim ve incelemeye devam edelim.

create table complex( 
col1 number,
col2 number,
col3 varchar2(10)
);

insert into complex values(1,5,'A');
insert into complex values(2,8,'B');
insert into complex values(3,20,'C');

Simdi de view olusturalim ;

create view complex_view
as select col1, col1+col2 total, col3
from complex;

Burada dikkat ederseniz , col1+col2 matematiksel isleminden kullandim ve buna isim olarak da total dedim.

select * from complex_view;

oracle complex view 1

Peki , Simple View de oldugu gibi View uzeinden yeni bir kayit eklemeye calisalim ;

insert into complex_view values (20,30,'D');

SQL Error: ORA-01733: virtual column not allowed here
01733. 00000 – “virtual column not allowed here”

Biraz once belirtigim gibi Complex View uzerinde insert islemini gerceklestiremeyiz. Peki update islemini inceleyelim,

update complex_view
set total = 25 where col3 = 'A';

SQL Error: ORA-01733: virtual column not allowed here
01733. 00000 – “virtual column not allowed here”

Yine ayni hatayi aldik , virtual column ,total alanini degistirmeye/set Oracle izin vermemektedir. Bununla birlikte diger alanlari/column , (virtual column olmayanlari) kullanarak update islemini gerceklestirebiliriz.

update complex_view
set col1 = 10 where col3 = 'A';

Delete isleminde ise virtual column sorun cikartmamaktadir ;

delete from complex_view 
where total = 15;
  • Tekrar edecek olursak , Complex Viewler uzerinden insert islemi gerceklesmemektedir.
  • Update islemi  virtual columnlar disinda gerceklesmektedir.
  • Delete islemi kisitlama bulunmaksizin gerceklesmektedir.

Yazimi burada sonlandiriyorum.

Herkese Bol Javali Gunler dilerim.
Be an oracle man , import java.*;
Levent Erguder
injavawetrust

Print Friendly, PDF & Email

Leave a Reply

Your email address will not be published.