Başlangıç > Database, Forms, Hata, Oracle, PL/SQL, Reports > ora-01427:single-row subquery returns more than one row hatası

ora-01427:single-row subquery returns more than one row hatası


Merhaba,

Pl/sql ortamında ya da oracle forms içindeki hazırladığımız sql lerde subquery kullanımlarında birden fazla kayıt gelmesi durumunda ora-01427 hatası alınır.Örnek olarak aşağıdaki sql ler kontrol edilebilinir.

SELECT * FROM all_users 
WHERE username = (SELECT owner FROM all_tables 
                  WHERE owner = 'SYS');

Bu sql çalıştığı zaman ora-01427 hatası alınır.Bu hatanın alınmasının sebebi subquery olarak kullandığımız

SELECT owner FROM all_tables 
WHERE owner = 'SYS';

sqlinden birden fazla satır gelmesindendir. Ama bu sqli subquery olarak kullandığımızda ” = ” değil de ” in ” yapısı ile kullanırsak bu hatayı almayız.Mevcut sql aşağıdaki gibi değiştirildiğinde hata alınmadığı ve sql den sonuç geldiği görülebilinir.

SELECT * FROM all_users 
WHERE username IN (SELECT owner FROM all_tables 
                   WHERE owner = 'SYS');

Bu ve benzeri durumlar için hazırladığımız subquery den kaç satır geleceğini bilmediğimiz durumlarda in yapısı exists yapısı ya da ön bir kontrol sqli ile bu hatanın alınması engellenebilir ve doğru sonuca ulaşılabilinir.
Kolay gelsin.

Reklamlar
  1. Mustafa
    23 Mayıs 2015, 09:40

    Çok teşekkür ederim ellerine sağlık.

    Beğen

  1. No trackbacks yet.

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 )

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 )

Google+ fotoğrafı

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

Connecting to %s

%d blogcu bunu beğendi: