in Eski Blog Yazılarım

ADO’da ilginç bir durum daha.

Biraz önce ilginç bir durumla karşılaştım. SqlConnection ile Sql 2005 veritabanına bağlanıp. SqlCommand ile Stored Procedures’e aşağıdaki şekilde parametre geçip çalıştırdığımda  anlamsız bir syntax error hatası döndü.

            using (SqlCommand cmd = new SqlCommand("StoredProcedures_Name", Baglan))
{
Cmd.CommandType = CommandType.StoredProcedure;
Cmd.Parameters.Add("@id", SqlDbType.Int).Value = Deger;
Cmd.ExecuteNonQuery();
}

Bu şekilde bir kullanım nedense SQL Server’da sp_executesql
sistem Stored Procedures’ini çağırıyor.Böyle olunca .net sorguyu yanlış
sözdizimi ile oluşturuyor ve syntax error geri dönüyor. Fakat
Parametreleri aşağıdaki şekilde kullandığınız da bu sefer exec komutu ile Stored Procedures’iniz sağlıklı ve doğru şekilde çalışıyor.

            using (SqlCommand cmd = new SqlCommand("StoredProcedures_Name", Baglan))
{
Cmd.CommandType = CommandType.StoredProcedure;
SqlParameter prm_id = new SqlParameter("@id", SqlDbType.VarChar, 255);
prm_id = From;

Cmd.Parameters.Add(prm_id);
Cmd.ExecuteNonQuery();
}

Aslında bu iki kullanım da aynı kapıya çıkyor fakat oluşan SQL sorgusu farklı! Bu aslında bir bug’da olabilir. Çünki sp_executesql sorgusunu 1. şekilde kullandığınız zaman .net’in ürettiği kod yanlış geliyor.

Yorum Bırak

Comment