Windows'ta Oracle Script'leri çalıştırmak için ilk önce komutlarımızı windows'ta bir dizine kaydetmemiz lazım. Göstereceğimiz ilk örnek sql scripti yazmak ve çalıştırmak olacaktır.
Sql Script İçeriği:,
Sql scriptimizde bu örneğimizde basit bir işlem yapacağız. Sonrasında bunun çıktılarını göreceğiz. Aşağıda yazdığımız scriptimizi "C:\abc.sql" olarak kaydedelim.
CONNECT berke/berke
SPOOL C:\abc.log
SET LINESIZE 100
SET PAGESIZE 50
SELECT *
FROM hr.employees;
SPOOL OFF
EXIT;
Yukarıdaki script'de basitçe sample schema'mızdaki employees tablosuna bir select atarız.Çıkan sonuçları da C:\ dizinindeki abc.log 'unun içine atarız. Bağlanırkenki kullanıcı adı ve şifrenizi değiştirmeyi unutmayın. Buradaki kullanıcı hr tabloları üzerinde yetki sahibi bir kullanıcıdır.
Bu scriptimizi istersek sqlplus'ta çalıştırabiliriz.
cd C:\
sqlplus berke/berke
SQL>@abc.sql
Kendimizi yukarıdaki kodlardan da kurtarabiliriz. İşlemlerimizi daha otomatik bir hale getirmek için bir batch file yaratabiliriz. Bat dosyamızı C:\abc.bat olarak yaratalım.
cd C:\
sqlplus /nolog @C:\abc.sql
Bat dosyamız içerisine yukarıdaki kodları yazıp çalıştırırsak programımız istediğimiz gibi çalışır.
Peki bu bat file'ın otomatik çalıştırılması için ne yapılması gerekir?
Windows'ta bu işlem "Scheduled Tasks Wizard" adlı yerden gerçekleştirilir. (Start > Programs > Accessories > System Tools > Scheduled Tasks)
Unix ve Linux(Method 1)
Unix örneğimizde de yukarıda yazdığımız sql script örneğimizi kullanacağız. Sql scriptimizi alıp Linux veya Unix ortamlarda da aynı şekilde çalıştırabiliriz. Windows ortamdan farklı olarak batch dosyası yaratmak yerine bir script dosyası yaratırız.
#!/bin/bash
sqlplus /nolog @/home/oracle/Desktop/abc.sql
Bu script dosyasını yarattıktan sonra abc.sh olarak kaydederiz. Bununla birlikte scriptimize çalıştırmak için chmod ile yetki vermemiz gerekir.
chmod 777 /home/oracle/Desktop/abc.sh
Unix ve Linux(Method 2)
Linux'taki başka bir metod ise yukarıdaki gibi bir tane sql dosyası bir tane de script dosyası yaratmak yerine sadece bir script dosyası yaratıp yukarıdaki işlerden kendimizi kurtarmamızı sağlar.
#!/bin/bash
sqlplus /nolog << EOF
CONNECT berke/berke
SPOOL /home/oracle/Desktop/abc.log
SET LINESIZE 100
SET PAGESIZE 50
SELECT *
FROM hr.employees;
SPOOL OFF
EXIT;
EOF
Buradaki script'imizede yukarıdaki örneğimizde verdiğimiz gibi tekrar chmod ile yetkilerini verdikten sonra çalıştırabiliriz. Bu methodumuzu Windows'ta da uygulayabiliriz. Yani orada da bir bat dosyası bir sql dosyası yaratmak yerine sadece bir bat dosyası çalıştırıp, bat dosyası içine aşağıdaki bilgileri bu örnek için yapıştırabiliriz.
cd C:\
sqlplus /nolog <
Unix ve Linux'ta Script'ten Nasıl Değer Döndürebiliriz?
Yazdığımız scriptlerde amacımız eğer bir değer geri döndürmek ise sorgumuzun sonuçlarını alıp ekrana basmamız ve script içinde bu değeri işlememiz gerekir. Aşağıdaki örnekte employees tablosundan çektiğimiz sonuçları x değişkenimizin içine atarız. Sonrasında sql scriptinin içi bittiğinde console a geri döner ve eğer hiç bir sonuç yoksa bunu ekrana basar.
Script'lerden değer döndürmede sorun birden fazla satır ve değer geldiğinde oluşmaktadır. Bu durumda sonuçların parse edilmesi ve istenen sonucun ayrılması gerekmektedir; ancak tek sonuç geliyorsa işimiz kolaydır.
#!/bin/bash
x=`sqlplus -silent berke/berke <
Hiç yorum yok:
Yorum Gönder