Tablo İçeriğine & Karakteri Ekleme (Oracle)

Merhabalar bu yazımda karşılaştığım bir problemi ve karşılaştığım çözümler hakkında yazacağım.

Aşağıdaki şekilde bir tabloya bir değer girmek istediğimi varsayalım:

CREATE TABLE test (Ad varchar2(35)); 
INSERT INTO test values ('&Hazal');

Ancak sistem & kullandığımızda bir değer atamamızı ister. Peki ve (&) işareti koymak istediğimizde ne yapacağız? Bu sorunun cevabını AskTom (asktom.oracle.com) ‘da buldum ve direkt çevirerek sizinle paylaşmak istiyorum.

Öncelikle problemin ne olduğunu daha iyi anlayalım. SQL*Plus’ta &Hazal girilen yerlere atama yapmamız istenir. Oysa ki yapmak istediğimiz, direk olarak &Hazal formatıyla tablo içeriğine alınmasıdır. SQL*Plus’ta şu şekilde görebiliriz bu durumu:

SQL> insert into test (Ad)
values ('&Hazal');
Enter value for Hazal: Merhaba Dunya
old   1: insert into test (Ad)
values ('&Hazal')
new   1: insert into test (Ad)
values (' Merhaba Dunya')
1 row created.

Bu durumda tablodan veri çektiğimizde şu durum ortaya çıkar:

SQL> select * from test;
AD
———————————————————————
Merhaba Dunya

Burada &Hazal Merhaba Dunya şekline dönüştürülmüştür.

  •  Bu durumu durdurmanın en basit yollarından biri SQL*Plus set define off komutunu kullanmaktır.
SQL> set define off
SQL> insert into test (Ad)
values ('&Hazal');
1 row created.
SQL> select * from test;
AD
———————————————————————
Merhaba Dunya
&Hazal
  •  Bu durum SQL*Plus’ta atama karakteri bulunmasını engeller. Yerine yeni bir atama karakteri koyarak bunu da geçiştimiş oluruz.
SQL> set define @
SQL> insert into test (Ad)
values ('&Hazal @X');
Enter value for x: girilen deger
old   1: insert into test (Ad)
values ('&Hazal @X')
new   1: insert into test (Ad)
values (' &Hazal girilen deger’)
1 row created.
  •  Ya da & karakterini kullanmaktan kaçınabiliriz.
SQL> insert into test
values (chr(38)||'Hazal  xxx');
1 row created.
SQL> select * from test
where Ad like '% xxx';
NAME
—————————————————————————
&Hazal  xxx
  •  chr(38) yerine sanırım ‘&’ kullanılabilir.
SQL> insert into test
values ('&'||'Hazal yyy');
1 row created.
SQL> select * from test
where Ad like '% yyy';
AD
—————————————————————————
&Hazal yyy

İyi Çalışmalar
Hazal Çıplak

Reklamlar

Bir Cevap Yazın

Aşağıya bilgilerinizi girin veya oturum açmak için bir simgeye tıklayın:

WordPress.com Logosu

WordPress.com hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap /  Değiştir )

Google+ fotoğrafı

Google+ hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap /  Değiştir )

Twitter resmi

Twitter hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap /  Değiştir )

Facebook fotoğrafı

Facebook hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap /  Değiştir )

Connecting to %s