Etiket Arşivi not all variables bound hatası

“Not all variables bound” Hatası

Merhabalar.

C#’ta geçenlerde karşılaştığım “not all variables bound” hatası ve bu hatanın çözümünden bahsetmek istiyorum. Hata ile c# üzerinden Oracle’da bir sorgu yapmaya çalışırken karşılaştım.

Öncelikle, OGRENCI adlı tablomda aşağıdaki veriler var:

c hata 1

Bu tablodan ADı “Ali” olan ve NOsu 5’ten küçük olan, ya da ADı “Ali” olan ve MEMLEKETi “Tokat” olanları DataTable’a atamak istiyorum. Ama sadece isim kısmını parametrik gireceğim.

Kodumu aşağıdaki gibi oluşturuyorum:

string isim = "Ali";
string memleket = "Tokat";

OracleParameter[] commandParameters = new OracleParameter[] { new OracleParameter("isim", OracleDbType.Varchar2, isim, ParameterDirection.Input) };

string commandText = "SELECT * FROM ogrenci WHERE (ad=:isim AND no<5) OR (ad=:isim AND memleket='Tokat')";

Sonuç:

c hata 2

Şimdi MEMLEKETi de parametre oluşturarak sorguya ekliyorum:

string isim = "Ali";
string memleket = "Tokat";

OracleParameter[] commandParameters = new OracleParameter[] { new OracleParameter("isim", OracleDbType.Varchar2, isim, ParameterDirection.Input),
                                                              new OracleParameter("memleket", OracleDbType.Varchar2, memleket, ParameterDirection.Input) };

string commandText = "SELECT * FROM ogrenci WHERE (ad=:isim AND no<5) OR (ad=:isim AND memleket=:memleket)";

..ve aşağıdaki hatayı alıyorum:

c hata 3

Hatanın nedeni; sorgu cümlesinde, aralarında farklı bir ismin de bulunduğu 3 tane parametre girmem ama commandParameters içine iki tane parametre tanımlamış olmam. Dolayısıyla yapmam gereken: Eğer sorgu cümlesine ekleyeceğim değişik isimde parametrelerim varsa -10 parametreden 1’i bile olsa- o sayıda parametre tanımlamak. Burada 2 tane “isim”, 1 tane de “memleket” parametresi tanımlıyorum. Yani:

string isim = "Ali";
string memleket = "Tokat";

OracleParameter[] commandParameters = new OracleParameter[] { new OracleParameter("isim", OracleDbType.Varchar2, isim, ParameterDirection.Input),
                                                              new OracleParameter("isim", OracleDbType.Varchar2, isim, ParameterDirection.Input),
                                                              new OracleParameter("memleket", OracleDbType.Varchar2, memleket, ParameterDirection.Input) };

string commandText = "SELECT * FROM ogrenci WHERE (ad=:isim AND no<5) OR (ad=:isim AND memleket=:memleket)";

şeklinde bir kod yazarsam hiç bir problem kalmıyor.

Kendinize çook iyi davranın.

 Bu sayfa 1018 kez görüntülendi

It's only fair to share...Share on LinkedInShare on FacebookShare on Google+Tweet about this on TwitterShare on Tumblr