Oracle etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster
Oracle etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster

23 Ekim 2010 Cumartesi

ORACLE TRIGGER YAPILARI

--tablolar uzerinde belirli bir olay olduktan sonra otomatik olarak calısan sistemlere denir.
-- after ,before olmak uzere 2 tiptedir.

--after :işlemler yapıldıktan sonra calısır
--before : normal kosullarda calıstırılmasaı gereken kodların yerine bunu calıstırır.

-- sql serverdaki inserted ve deleted tablolarının yerine :NEW ve :OLD tabloları bulunmaktadır.


--Ornek : urunler tablosuna bir eleman eklendikten sonra o urunadı alınır ve yedek tablosuna aktarılır..
CREATE OR REPLACE TRIGGER DENEME
AFTER INSERT
ON URUNLER
FOR EACH ROW

DECLARE
V_USERNAME VARCHAR2(20);

BEGIN
SELECT USER INTO V_USERNAME FROM DUAL;

INSERT INTO URUNLER_YEDEK(URUNADI,KAYITYAPAN)
VALUES
(
:NEW.URUNADI,V_USERNAME
);

END;


--TEST------
INSERT INTO URUNLER(URUNADI) VALUES('CIZI');

SELECT * FROM URUNLER_YEDEK;

ORACLE SWITCH CASE YAPILARI

--sadece esitlik durumuna bakan bu sistem if yapısına gore daha hızlı calısmaktadır...

DECLARE
OGRCOUNT NUMBER;
BEGIN

SELECT COUNT(*) INTO OGRCOUNT FROM STUDENTS;

CASE OGRCOUNT
WHEN 1 THEN
DBMS_OUTPUT.PUT_LINE('BIR OGRENCI OLSUN YETER BANA');

WHEN 0 THEN
DBMS_OUTPUT.PUT_LINE('OGRENCI YOK');

ELSE
DBMS_OUTPUT.PUT_LINE('BU KADARI DA FAZLA AMA');

END CASE;
END;

ORACLE KOSUL IFADELERI

--IF ELSIF ELSE YAPILARI

--sorgularınızdan gelen nesnelerin durumlarına bakarak işlemler yapmak için kullanılır.

DECLARE
OGRCOUNT NUMBER;
BEGIN

SELECT COUNT(*) INTO OGRCOUNT FROM STUDENTS;

IF OGRCOUNT >1
THEN
DBMS_OUTPUT.PUT_LINE('SINIFIN DURUMU IYI');

ELSIF OGRCOUNT <1
THEN
DBMS_OUTPUT.PUT_LINE('HIC OGRENCI YOK NORMAL DEGIL');

ELSE
DBMS_OUTPUT.PUT_LINE('BIR OGRENCI OLSUN YETER BANA');

END IF;
END;

ORACLE FUNCTION YAPILARI

--yapılan işlemlerden sonra geriye deger donduren sistemlere denir...
--return anahtar kelimesi nesneyi dondurur.

CREATE OR REPLACE FUNCTION KDVLIGETIR(DEGER NUMBER, KDVORAN NUMBER)
RETURN NUMBER
AS
BEGIN
RETURN DEGER * KDVORAN;
END;

-- CALISTIRILMASI
SELECT KDVLIGETIR(100,1.18) FROM DUAL;

--DUAL :  FUNCTION GIBI YAPILARIN CALISTIRILABILMESI ICIN GEREKLI OLAN SANAL TABLODUR.

--sadece functionlar matematiksel işlemler için kullanılmaz. select sorguları gibi soruglar
--içinde kullanılabilir.

CREATE OR REPLACE FUNCTION IDYEGORE(OGRID NUMBER)
RETURN VARCHAR2
AS
V_NAME VARCHAR2(40);
BEGIN

SELECT STUDENTNAME INTO V_NAME FROM STUDENTS WHERE STUDENTID=OGRID;
RETURN V_NAME;

END;

----------CALISTIRILMASI

DECLARE
  OGRID NUMBER;
  v_Return VARCHAR2(200);
BEGIN
  OGRID := 2;

  v_Return := IDYEGORE(
    OGRID => OGRID
  );
  DBMS_OUTPUT.PUT_LINE('v_Return = ' || v_Return);
END;

-- DBMS denilen yapı sorgu sonuclarının goruntulenebilmesi için yaratılmıs bir cıktı merkezidir.
--bu yapı varsayılan olarak kapalıdır. acabilmek için ust menu => Vıew=> Dbms output
-- yesil + işaretine basarak kendinize bir oturum acın...

ORACLE STORE PROCEDURE




--database içerisinde compile edilmiş yani derlenmiş hazır bir halde bekleyen kodlara procedure denilir.
--normal kodlara gore daha hızlı calıslır. kodlar database içerisinde saklandıgı işçin daha guvenlidir.



CREATE OR REPLACE PROCEDURE CEKLE
(
CNAME IN VARCHAR2
)
AS
BEGIN
INSERT INTO CLASSES(CLASSNAME) VALUES(CNAME);
END;

--CALISTIRILMASI

DECLARE
CN VARCHAR2(30);

BEGIN
CN:= 'YV35203';
CEKLE(CNAME=>CN);

END;

--TEST
SELECT * FROM CLASSES;



-- Procedure olarak adlandırdıgımız bu yapılar sql serverda oldugu gibi direkt select sorgularını calıstıramaz.
-- eger select sorgunuzu yazmak isterseniz geriye dondureceginiz tiplerin out parametreli olması gerekir.

CREATE OR REPLACE PROCEDURE IDYEGORESINIF
(
CID IN NUMBER,
CNAME OUT VARCHAR2
)
AS
BEGIN
SELECT CLASSNAME INTO CNAME FROM CLASSES WHERE CLASSID = CID;
END;

ORACLE VIEWLER



-- karmasık select sorgularının defalarca yazılması yerine bunları takma bir ad ile kaydetmek ve
--kısaca cagırmak suretiyle calısır.

--CREATE OR REPLACE : yoksa yarat varsa eskisini sil yenisini yarat...
--Force : eger sistem içerisinde view olusturmak istediğiniz tablo yok ise view için izin verir.

--nonforce : olmayan bir tablo için view yaratılmaz. varsayılan guvenlik ayarıdır.

--with check option : eger sorgunuzda where kriteri var ise ve siz view uzerinden insert yapmak istiyor iseniz
--where kriterine uygun bilgi girmek zorundasınız...

--alias : sorguda yer alan kolonlarınıza yeni ad vermek için kullanılır.. as gibi ....

CREATE OR REPLACE VIEW SINIFLARIGETIR
AS
SELECT * FROM CLASSES;


--CALISTIRILMASI
SELECT * FROM SINIFLARIGETIR;


----**********
CREATE OR REPLACE VIEW IDYEGOREOGRENCI
AS
SELECT STUDENTNAME,STUDENTCLASS FROM STUDENTS WHERE STUDENTCLASS = 1
WITH CHECK OPTION CONSTRAINT SINIFBASKISI;

--***TEST
INSERT INTO IDYEGOREOGRENCI
VALUES('YUCEL','1');

ORACLE VERI TIPLERI

--CHAR : 2000 karaktere kadar olan verileri tutar. sabit uzunluklu bilgileri saklamak için kullanılır.
--NCHAR : char gibidir ancak diger dillerdeki karsılıkları da saklar. Unicode..

--VARCHAR2 : 4000 karaktere kadar bilgi saklar.
--NVARCHAR2 : varchar2 gibidir ancak Unicode degerleri de saklar.

-- NUMBER : int ,tinyint ,money,decimal farketmez hepsini numberda yakalayabilirsiniz.
--kullanımı sqldeki decimal gibidir. Number(x,y) => Number(5,2)
--toplam karakter sayısı 5 : ondalık kısmı 2 olacak demektir.  123,99

--Date : MÖ 1 ocak 4712 ile MS 31 aralık 9999 arasındaki tarihleri temsil eder.

--CLOB : character large object : 4 gba kadar lık metinsel bir ifadeyi saklayabilir.
--varchar(max)a denk gelir.

--BLOB : Binary large onject : 4gblık bir filei dbde saklayabilir. resim,video,mp3,pdf,exe,xls,doc
--varbinarye karsılık gelen tiptir.


ORACLE TABLESPACE YARATILISI




--tabloların birbirine karısmasını engellemek amacı ile kullanılan mantıksal bir kumedir.
--sqldeki database  denk gelmektedir.

CREATE TABLESPACE OKUL DATAFILE 'C:\oraclexe\oradata\XE\OKUL.DBF' SIZE 5M;

-- tablespace yaratıldıktan sonra bu tablo alanını kullanacak olan kisiyi yaratmalısınız.
CREATE USER STUDENT
IDENTIFIED BY HAKAN
DEFAULT TABLESPACE OKUL
TEMPORARY TABLESPACE TEMP
QUOTA UNLIMITED ON OKUL;

-- kullanıcının yaratılması baglanabilirsiniz anlamına gelmez. SYS isimli kullanıcının yetki
--vermesi gerekir.  Connect rolune dahil edilmemis birisi Oracle ' a baglanamaz. !!!
-- Other User klasorunun içerisine git -- kullanıcını  bul --sag click Edit --
--Rol ve privligies ayarlarını yap...

--yetkilernizi verdikten sonra bu kullanıcı için bir connection yaratabilirsiniz.

Onemli Oracle Kullanıcıları

--SYS : sql serverdaki sa ya denk gelmektedir.
--SYSTEM : sys kadar olmasa da bazı sistem tablolarından sorumlu admin duzeyindeki kisidir.
--DBSNMP : veri tabanı hakkında istatistiksel verilere ulasabilmek ve raporlarmak için
--gerekli olan kisidir.
--SYSMAN : Enterprise editionda SYS nin karsılıgıdır..

Oracle Tablespaceleri

-- Sistemin tablespace uzantısı : DBF tir. database filedir.
--SYSTEM : oraclein tum aktivitelerini duzenlemesini saglayan sistem tablolarıdır. oracleın ilk
--zamanlarından beri var olan bir tablespacedir.

--SYSAUX: 10g versiyonuna kadar sistemin tum yukunu SYSTEM tablespace cekmisti.
--gunumuzde bu agırlıkla basa cıkamayacagı için yardımcı bir yapı geliştirdi.

--USERS : oracle içerisinde kullanıcıların adlarını ve yetkilerini tutan sistemdir.

--UNDO: transaction işlemleri sırasında işlemler onaylanana kadar eski bilgilerin
--saklandıgı yere denir.

--TEMP: gecici tabloların bulundugu yere temp denilir.

--Control : oracle içerisinde calısan servislerin ve bazı hizmetlerin kontrolunden sorumlu
--birimdir. istatistiksel calısır.

ORACLE EDITIONLAR

Express Edition : 10g surumu en son surumdur. 4 gb veri sınırı bulunmaktadır.
network ortamından birileri servera baglanırsa sayı 15-20 arasındadır.. ancak internet
ortamından gelen istekler soz konusu oldugunda sayı sınırsızdır...

Standart Edition : orta olcekli firmalarda kullanılan sistemdir. yada buyuk firmaların
subelerinde kullanılan sistemdir.

Enterprise Edition: Sınırsız ve en geniş surumdur. Grid Teknolojisine sahiptir.
Grid teknolojisi birden fazla makina bir araya gelerek tek bir makina gibi calısabilir.

ORACLE NEDIR



--1973 yılında ortaya cıkmıstır.
--1521 nolu portu kullanır..
--Microsoft sql server database yonetim sistemidir , Oracle ise veritabanın kendisidir.