PL/SQL Değişkenler ve Sabitler

Pl/Sql’de değişkenler ve sabitler tanımlayıp bunları daha sonraki SQL ve program cümlelerinde kullanabiliyoruz.Bir değişken veya sabitler kullanılmaya başlamadan önce mutlaka tanımlanmış olmalıdır. Değişken tanımlanması şu şekilde yapılmaktadır;

<değişken ismi> veri tipi [NOT NULL ] [:= <ilk değer>]
employee_id NUMBER NOT NULL :=23

Sabitlere ilk kullanıldığı yerlerde değer atar ve bir daha atadığımız değeri değiştiremeyiz. Sabit kullanırken CONSTANT kelimesi kullanılır. Sabitlerin değişkenlerden farkı bununla birlikte ilk değer atamasının hemen yapılmasıdır

<sabit_ismi> veri tipi CONSTANT [NOT NULL] [:=<ilk değer>]

NOT :  Pl/Sql de değer atama := sembolleriyle yapılır. Pl/Sql blokları içinde select,insert,update,delete,commit ve rollback ifadeleri kullanılabilir.

DECLARE
  l_string  VARCHAR2(20);
  l_number  NUMBER(10);

  l_con_string  CONSTANT VARCHAR2(20) := 'This is a constant.';
BEGIN
  l_string := 'Variable';
  l_number := 1;

END;
/

PL/SQL procedure successfully completed.
DECLARE
  l_string  VARCHAR2(20);
  l_number  NUMBER(10);

  l_con_string  CONSTANT VARCHAR2(20) := 'This is a constant.';
BEGIN
  l_string := 'Variable';
  l_number := 1;

  l_con_string := 'This will fail';
END;
/

l_con_string := 'This will fail';
  *
ERROR at line 10:
ORA-06550: line 10, column 3:
PLS-00363: expression 'L_CON_STRING' cannot be used as an assignment target
ORA-06550: line 10, column 3:
PL/SQL: Statement ignored

NOT : PL/SQL de değişkenlerin kapsamı global ve local olmak üzere 2 çeşittir.Local değişkenler içteki(inner) bloklarda kullanılır ve dıştaki bloklarda kullanılmaz.Global değişkenler ise her tarafta kullanılabilir.Örnek;

DECLARE
   -- Global variables
   num1 number := 95;
   num2 number := 85;
BEGIN
   dbms_output.put_line('Outer Variable num1: ' || num1);
   dbms_output.put_line('Outer Variable num2: ' || num2);
   DECLARE
      -- Local variables
      num1 number := 195;
      num2 number := 185;
   BEGIN
      dbms_output.put_line('Inner Variable num1: ' || num1);
      dbms_output.put_line('Inner Variable num2: ' || num2);
   END;
END;
/

NOT : Atama yapılırken dikkat edeceğimiz bir diğer husus da into kalıbı. SQL ile çekip aldığımız değeri aynı tipte ki değişkenimize atıyoruz.

Declare
	v_salary number(10);
begin
	select salary into v_salary
	from hr.employees
	where employee_id = 100;
	dbms_output.put_line(v_salary);
end;
/
24000

PL/SQL procedure successfully completed.

Yararlı olması Dilegiyle …
Yazar : Mustafa Bektaş Tepe

Kaynaklar;
http://www.tutorialspoint.com/plsql/plsql_basic_syntax.htm
https://developersdaily.wordpress.com
http://docs.oracle.com/cd/B19306_01/appdev.102/b14261/
https://docs.oracle.com/cd/E11882_01/appdev.112/e40758/toc.htm
https://oracle-base.com/articles/misc/introduction-to-plsql

Loading


PL/SQL Block

PL/SQL, SQL cümlelerine blok yapılarının,şart cümlelerinin,dögülerin v.b diğer özelliklerin eklenmesiyle oluşmuş bir dildir.En temel yapı birimi bloktur.Bir veya birden fazla bloktan oluşabilirler.Akış kontrolü sayesinde yapısal dillere ait olan şart cümleleri ve döngüler PL/SQL bloklarında kullanılabilir. Aşağıdaki resimde bir PL/SQL bloğunun çalışması gösterilmiştir.

PL/SQL Block - PL/SQL Engine

Birbirleriyle ilişkili ifadelerin mantıksal bölümlere ayrılması demektir.Değişken tanımlamaları ve hata kontrolleride her blok içerisinde yapılabilir.PL/SQL blok yapısı 3 bölümden oluşur.


[DECLARE

-- delarations]

BEGIN

-- statements

[EXCEPTION

-- handlers

END;

(devamı..)

Loading


PL/SQL Genel Bakış

PLSQL Procedural Language Structured Query Language ‘ nin kısa adıdır. 1980 ler’n sonunda Oracle tarafından geliştirilmeye başlanmıştır.

  • PL/SQL taşınabilir, yüksek performanslı transaction-processing dilidir.
  • PL/SQL veritabanı tarafından yorumlandığı için işletim sistemi bağımsızdır.
  • SQL’i doğrudan SQL*Plus üzerinden çalıştırabiliriz.
  • Başka programlar, veritabanından direk PL/SQL kodlarını çağırabilir.
  • PL/SQL’in sözdizimi ADA ve Pascal diline dayanmaktadır.

PL/SQL yapısal dillere ait özelliklerin SQL’e eklenmesiyle ortaya çıkan Oracle’a has bir dildir. İstemcisunucu ortamları tasarlama ile ağ üzerindeki dağıtık işlemler yapma ve transactionlar çalıştırma imkanı sunmaktadır. PL/SQL kullanarak her türlü SQL cümleciğini yazabilirsiniz. Dinamik SQL ifadeleri oluşturup, çalıştırabilirsiniz. PL/SQL programları genellikle veritabanında saklanırlar. Bu nedenle sorguların istemciden veritabanına gönderilmesi ve tekrar istemciye gönderilmesine gerek yoktur. Böylecilikle ağ trafiğini de azaltmış olur.
(devamı..)

Loading


Oracle SYS_CONTEXT nedir?

SYS_CONTEXT fonksiyonunu veri tabanına bağlı bulunduğumuz kullanıcı üzerinde set edilmiş sistem değişkenlerini(enviroment) toplamak için kullanabiliriz. Bu sayede kullanıcı üzerine atadığımız ya da otomatik olarak atanan tüm değerlere ulaşabiliriz.
Özellikle yazılım için de log mekanizması veya trigger larda çok fazla kullanıldığı gibi çokda iş görüyor.
Bu fonksiyon ile database üzerinden birçok veriye ulaşabiliriz. Kullanıcı bilgisi, ip bilgisi, tarih formatı, dil bilgisi vb.Örnegin; Veritabanı sid bilgisine ulaşmak için;

select sys_context('userenv','sid') from dual;

veya veritabanı ismine ulaşmak için aşagıdaki sql’den yararlanabiliriz.

select sys_context('userenv','db_name') from dual;

SYS_CONTEXT ile kullanabilecegimizparametrelerden bazıları aşagıda ki gibidir. (devamı..)

Loading


Linux Sunucularda Ağ Bağdaştırıcısının Adını(Network Interface Card) Değiştirme

Bu yazıda, ethernet/kablosuz bağdaştırıcı (eth0, eth1, wlan0, wlan1 vb.) için tanımlanan adın nasıl değiştirileceği ele alınacaktır. Linux altında kablolu/kablosuz bağdaştırıcı için geçerli adı şu komutla kontrol edebilirsiniz;

ifconfig

Sonra, ilgili dosyanın bir yedeğini almak üzere şu komutu döndürüyoruz;

cp /etc/udev/rules.d/70-persistent-net.rules /etc/udev/rules.d/70-persistent-net.rules.back

1. Öncelikle ağ bağdaştırıcılarının MAC adreslerini aşagıda ki komut yardımıyla ögreniriz.

# ifconfig -a | grep -i --color hwaddr

Örnek çıktı;

eth0      Link encap:Ethernet  HWaddr b8:ac:6f:65:31:e5
pan0      Link encap:Ethernet  HWaddr 4a:71:40:ed:5d:99
vmnet1    Link encap:Ethernet  HWaddr 00:50:56:c0:00:01
vmnet8    Link encap:Ethernet  HWaddr 00:50:56:c0:00:08
wlan0     Link encap:Ethernet  HWaddr 00:21:6a:ca:9b:10

2. Şimdi “/etc/udev/rules.d/70-persistent-net.rules” dosyasını düzenleyerek ağ bağdaştırıcılarının isimlerini degiştirebiliriz.

vi “/etc/udev/rules.d/70-persistent-net.rules”
# PCI device 0x14e4:0x1680 (tg3)
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="b8:ac:6f:65:31:e5", ATTR{dev_id}=="0x0", ATTR{type}=="1", KERNEL=="eth*", NAME="eth0"
 

Örnegin “/etc/udev/rules.d/70-persistent-net.rules” dizinimizin içerisi yukarıdaki gibi olsun buna gore mac adresi “b8:ac:6f:65:31:e5” olan cihazın adı “eth0” dır.
Bunu eth1 yapmak istersek “NAME” kısmını aşagıda ki gibi düzeltmemiz gerekir.

# PCI device 0x14e4:0x1680 (tg3)
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="b8:ac:6f:65:31:e5", ATTR{dev_id}=="0x0", ATTR{type}=="1", KERNEL=="eth*", NAME="eth1"

3. Daha sonra sisteme reboot vererek degişlikligi tamamlamış oluruz.

NOT : Sisteme reboot vermeden ismi degiştirmek istersek öncelikle “/etc/sysconfig/network-script” dizininde ki “ifcfg” ile başlayan dosyalarıda düzenlemeliyiz daha sonra network servisine restart vermeliyiz.

/etc/init.d/network restart

Ağ bağdaştırıcılarının isimlerini görmek için aşagıda ki komutlardan herhangi birini kullanabiliriz.

# ifconfig -a
# ifconfig wan0
# ifconfig -a | less
# ip addr show

Yararlı olması Dilegiyle…

Loading


Linux Sistemde reboot Vermeden Disk Ekleme

Çalışan sistemlere online olarak (scsi) disk eklemek mümkün. Ancak Linux yeni diskin algılanabilmesi için SCSI bus’ın re-scan edilmesi gerekiyor. Bu şekilde sistemi reboot etmeksizin yeni diski sisteme gösterebiliyorsunuz.
Bu işlemi yapmak için aşağıdaki adımları takip edebilirsiniz.
Sisteminize yeni diski ekledikten sonra üzerinde yapılması gereken re-scan işlemi, RHEL ve Debian tabanlı dağıtımlarda şu şekilde yapılmaktadır:

echo "- - -" > /sys/class/scsi_host/host0/scan

“host0″ ibaresi benim test sistemimdeki scsi_host’un ismidir ve bu değer sizin sisteminiz için farklı olabilir. Kendi scsi_host bilginizi öğrenmek için /sys/class/scsi_host dizininin altına bakabilirsiniz; host değeri buradaki dizinin ismidir:

ls -1 /sys/class/scsi_host

host0
host1
host2
Kendi scsi_host’unuzu öğrendikten sonra yukarıdaki komutu ilgili host değerini içerecek şekilde çalıştırsanız rescan işlemi yapılacaktır.

echo "- - -" > /sys/class/scsi_host/host0/scan
echo "- - -" > /sys/class/scsi_host/host1/scan
echo "- - -" > /sys/class/scsi_host/host2/scan

Durumu check etmek için fdisk komutunu -l paramteresi ile çalıştırabilirsiniz:

fdisk -l

Örnekte görüldüğü gibi sdc ismi ile yeni bir disk algılanmış durumda. Artık yeni diski uygun bir dosya sistemi ile formatlayabilir ve sisteminize mount edebilirsiniz.
Yararlı olması Dilegiyle…

Loading


  • Sertifikasyon



  • Etiketler

  • Topluluklar

                     
                     
  • Copyright © 1996-2010 Mustafa Bektaş Tepe. All rights reserved.
    Türkçeleştirme Blogizma | AltyapıWordPress