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:
Aşağıdaki şekilde bir tabloya bir değer girmek istediğimi varsayalım:
CREATE TABLE test (Ad varchar2(35));
INSERT INTO test values ('&Dr.DoWhile');
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 &Dr.DoWhile girilen yerlere atama yapmamız istenir. Oysa ki yapmak istediğimiz, direk olarak &Dr.DoWhile 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 ('&Dr.DoWhile'); Enter value for Hazal: Merhaba Dunya old 1: insert into test (Ad) values ('&Dr.DoWhile') 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 &Dr.DoWhile 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 @ 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)||'Dr.DoWhile xxx'); 1 row created. SQL> select * from test where Ad like '% xxx'; NAME ————————————————————————— &Hazal xxx
0 yorum