[Oracle] Split

Bazı durumlarda gelen değeri virgüllere ayırarak string şeklinde parametre geçeriz ki içeride virgüllerinden ayırarak bir dizi elde ederiz. Bunun C# ve JavaScript’deki karşılığı Split fonksiyonudur. Peki bu olay Oracle’da nasıl ?

Bu makale ile regexp_substring fonksiyonunun kullanımını anlatacağım. ( 10g ve üzeri için geçerlidir.)

Örneğin elimizde ‘1,2,3,4,5’ şeklinde bir string olsun. Bu string’i select içinde virgüllerine ayırıp 1,2,3,4,5 değerleri için kullanma gereksinimi duyduk.

select 
    regexp_substr('1,2,3,4','[^,]+', 1, level) 
  from dual
    connect by 
      regexp_substr('1,2,3,4', '[^,]+', 1, level) is not null;

split

Bu şekilde ‘1,2,3,4’ şekilde yazan yere parametre geçerek istediğiniz bir tabloda sorgu yapabilirsiniz.

[Oracle] Seed değerlerinin resetlenmesi

Oracle’da seed değerlerinin aşağıdaki scriptten faydalanabilirsiniz. İncelediğim kaynaklar da aşağısındadır.
Aşağıdaki script bir procedure oluşturur. Sequence ismini parametre geçerek ilgili sequence’ı sıfırlayabilir, böylelikle seed değerini de resetlemiş olursunuz.

create or replace
procedure reset_seq( p_seq_name in varchar2 )
is
    l_val number;
begin
    execute immediate
    'select ' || p_seq_name || '.nextval from dual' INTO l_val;

    execute immediate
    'alter sequence ' || p_seq_name || ' increment by -' || l_val || 
                                                          ' minvalue 0';

    execute immediate
    'select ' || p_seq_name || '.nextval from dual' INTO l_val;

    execute immediate
    'alter sequence ' || p_seq_name || ' increment by 1 minvalue 0';
end;

kaynak : http://stackoverflow.com/questions/51470/how-do-i-reset-a-sequence-in-oracle

kaynak : https://asktom.oracle.com/pls/asktom/f?p=100:11:0::::P11_QUESTION_ID:951269671592

kaynak : https://asktom.oracle.com/pls/asktom/f?p=100:11:0::::P11_QUESTION_ID:1119633817597

[Oracle] İlişkili tabloları bulma

Aşağıdaki script ile birbiri ile arasında ilişki bulunan tabloları bulabilirsiniz.

Constraint type’ların karşılıkları :
C – Check constraint on a table
P – Primary key
U – Unique key
R – Referential integrity
V – With check option, on a view
O – With read only, on a view
H – Hash expression
F – Constraint that involves a REF column
S – Supplemental logging

select uc.constraint_name as TableConstraint1,
uc.r_constraint_name as TableConstraint2,
uc.table_name as Table1,
us.table_name as Table2,
ucc.column_name as TableColumn1,
uccs.column_name as TableColumn2
from user_constraints uc
inner join user_constraints us on
uc.r_constraint_name = us.constraint_name
inner join USER_CONS_COLUMNS ucc on
ucc.constraint_name = uc.constraint_name
inner join USER_CONS_COLUMNS uccs on
uccs.constraint_name = us.constraint_name
where us.constraint_type in ('P','U');

kaynak : http://stackoverflow.com/questions/183642/what-do-the-letter-codes-in-oracle-user-contraints-tables-constraint-type-colum

kaynak : http://stackoverflow.com/questions/85978/query-a-tables-foreign-key-relationships

Bağlantı

Oracle Eğitim Seti – Başlangıç Düzey

Staj döneminde hazırlamış olduğum bir eğitim setidir. Yanlışlarımız hatalarımız olduysa affola. Düzeltmek sizin elinizde.

Bu setde Oracle Xpress Edition 10g kullanılmıştır. İndirilmesi ücretsizdir. 5 gb lık bir kullanım alanı sunmaktadır. Herkes indirip deneyebilir.

1- Oracle Kurulum

2-Kullanıcı Hesabı Oluşturma

3-Tablo Oluşturma

4-Sütun Ekleme

5-Sütun Düzenleme

6-Sütunu Yeniden Adlandırma

7-Sütunu Silme

8-Tablo İsmini Değiştirme

9-Tabloyu Kopyalama

10-Tabloyu Silme

11-Veri Ekleme ve Düzenleme

12-Veriyi Güncelleme

13-Order_by ile Listeleme

14-Inner Join İfadesi

15-Join İfadesi

16-Veri Listeleme

17-İki veya Daha Fazla Tabloyu Birleştirme

18-Grup Fonksiyonlarının Kullanımı

19-Trigger’lara Giriş

20-Trigger’ları Aktif Pasif Yapma

21-Stored Prosedure Oluşturma

22-Truncate İşlemi

23-Fonksiyon Oluşturma

24-Http Portunun Değiştirilmesi

25-Data Load İşlemi

26-Data Unload İşlemi

27-Triggerlara Genel Bakış

28-DDL Çıktı Alma

29-Uygulama Oluşturma