Home / MAKALELER / Veri Tabanı / Oracle Object Type Ve Insert İle Kullanımı

Oracle Object Type Ve Insert İle Kullanımı

Merhabalar,

 

Oracle’da Type kullanımı, nedenleri ve nasıllarına hep birlikte bakalım.

Neden Type kullanılır: Oracle’ın bize tanımladığı nesneleri vardır bunlar varchar, number, integer, date,CHAR(size) vs şeklinde çoğaltılabilir. Şimdi bunları elimizdeki alfabe ve bizim de istediğimiz bir kelimeyi oluşturmaya çalıştığımızı düşünelim. Ör:

 

Musteri_no: Number,

Adı: varchar2(20),

Soyad : varchar2(20),

birim_no: number

 

Bunlar herhangi bir şirkette standart kullanılan ve her zaman olmasını istediğimiz değişkenler olsun. O zaman şöyle düşünebiliriz, ben bir müşteri ile ilgili bir data ya ulaştığımda onun Musteri_no,Adı,Soyad,birim_no ‘suna da ulaşmış oluyum. Yani bir tabloya Müşteri ile ilgili yeni bir şey girildiğinde ya da yeni bir tablo yapıldığında ben tüm bu kolonları tek bir değişkene atayayım ve 4 kolon için ayrı tanımlamalar yapmak zorunda kalmayayım. Ana temamız bu şekilde. Şimdi nasıl kullanılırı örnekler üzerinden görelim.

 

CREATE OR REPLACE TYPE musteri AS OBJECT (

Musteri_no  Number,

Adi  varchar2(20),

Soyad   varchar2(20),

birim_no  number);

 

 

desc musteri -–Diyerek oluşturduğumuz objemizi inceleyebiliriz. Ordan da görebildiğimiz gibi şu an üstte tanımladığımız 4 kolon bu type’da mevcut. (“desc” syntax i Toad’ın sağlamış olduğu bir özellik, tüm arayüz araçlarında olmayabilir.)

 

Sonrasında yeni bir tablo create edelim.

 

CREATE TABLE table_musteri (

adres varchar2(50),

bilgi musteri);

 

‘table_musteri’ Tablomuzun üzerine geldiğimizde data kısmında iki kolon olduğunu göreceğiz. Şimdi burda data eklemeye çalıştığımızda bilgi kolonunun (, , , ) şekline geldiğini görebiliriz.

 

INSERT ve UPDATE işlemlerinin nasıl yapıldığına bakalım.

 

INSERT INTO table_musteri

VALUES (‘istanbul’, musteri (‘198’, ‘Dougles’, ‘Whalen’, ‘1’));

 

UPDATE table_musteri

SET bilgi = musteri (‘200’, ‘Michael’, ‘Pfay’, ‘2’)

WHERE bilgi = musteri (‘198’, ‘Dougles’, ‘Whalen’, ‘1’);

 

 

delete from  table_musteri

where bilgi = musteri (‘200’, ‘Michael’, ‘Pfay’, ‘2’);

Şimdi biraz daha kapsamlı bir örnek yapalım.Senaryomuz şu olsun: Üstte oluşturduğumuz table_musteri tablomuzdaki musteri kolonumuzdaki değişkenler de dahil olmak üzere farklı tablolardan çekelim. Öncelikle hr user’ında aşağıdaki adımları uygulayalım.

 

Table_1 için:

 

create table table_1(

employee_id NUMBER(6),

email VARCHAR2(25 BYTE),

phone_number VARCHAR2(20 BYTE),

first_name varchar2(20 byte),

last_name varchar2(25 byte));

 

INSERT INTO table_1

SELECT employee_id, email, phone_number,first_name, last_name

FROM hr.employees;

 

 

Table_2 için:

 

create TABLE table_2(

employee_id NUMBER(6),

job_id varchar2(10 byte),

department_id number(4));

 

INSERT INTO table_2

SELECT employee_id,job_id, department_id

FROM hr.job_history;

 

Şimdi Burda iki tablomuz var. Kendi tablomuza bu tablolardan ve hr şemasındaki employees ve job_history tablosundan data insert edelim.

 

 

INSERT INTO table_musteri
            (adres, bilgi)
   SELECT d.street_address,
          musteri (a.employee_id,a.first_name,a.last_name, b.department_id)
     FROM table_1 a, table_2 b, hr.departments c, hr.locations d
    WHERE a.employee_id = b.employee_id
      AND b.department_id = c.department_id
      AND c.location_id = d.location_id;

Tablomuzun görüntüsü aşağıdaki gibi olacaktır.

 

insert

 

Bir sonraki makalemizde görüşmek üzere…

About Mustafa Aksoy

Sakarya Üniversitesi Bilgisayar Mühendisliği mezunuyum. DWH/ETL ve Microstrategy Developer olarak çalışma hayatıma devam etmekteyim. İlgi alanlarım ve bildiğim teknolojiler; PL/SQL, ODI, ETL Circle, Data Guard,Reporting,Microstrategy ve Talend(ETL Tool)

İlginizi Çekebilir

SQL Server ile Veri Şifreleme

Bilgi teknolojilerinde verinin güvenliği çok kritik bir öneme sahiptir. Önemli verileri korumak için ekstra bir …

Bir Cevap Yazın