C# ile Output Parametreli Stored Procedure Çalıştırmak!

Arkadaşlar önceki makalelerimde C# ile stored procedure nasıl kullanıldığından bahsetmiştik. Bu makalede ise eğer stored procedure’de output veriye sahip bir parametre değişkenimiz varsa nasıl kullanacağımızdan bahsedeceğiz.

Aşağıdaki gibi bir stored proceduremuz olduğunu düşünelim;

create proc [dbo].[up_SifreOlustur]
@RandomID char(32) OUTPUT
as
begin
//--
end

 

Görüldüğü gibi Stored Procedure OUTPUT parametreli bir değişken alıyor bunun anlamı şu ‘Stored Procedure’ çalıştırıldıktan sonra @RandomID isimli değişkene bir değer yazılacak. Bunu C# programımızda kullanmak için ise aşağıdaki gibi bir yöntem izleyeceğiz;

SqlConnection cnn = new SqlConnection();
cnn.ConnectionString = Properties.Settings.Default.ConnectionString;
cnn.Open();
SqlCommand cmd = new SqlCommand();
cmd.Connection = cnn;
cmd.CommandText = "[up_Sifre]";
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.Add("@RandomID", SqlDbType.Char, 32);
cmd.Parameters["@RandomID"].Direction = ParameterDirection.Output;
try
{
 cmd.ExecuteNonQuery();
}
catch (Exception ex)
{
 MessageBox.Show(ex.Message);
 return;
}
tekKullanimlikSifre_tb.Text = (string)cmd.Parameters["@RandomID"].Value;

 

Kodumuzu inceleyecek olursak C# ile normalde nasıl stored procedure çalıştırıyorsak yine aynı şekilde çalıştırıyoruz fakat tek fark şu; cmd.Parameters.Add(“@RandomID”, SqlDbType.VarChar, 32); burada normalde .AddWithValue(…) deyip parametremizi geçiyorduk bu sefer .Add(…) kullanarak parametreyi geçiyoruz. Fonksiyonu inceleyecek olursak ilk parametre Stored Procedure’un istediği değişken ismi, 2. parametre ise değişkenin türü, 3. parametre ise değişkenin uzunluğu (int türü bir değişken olsaydı son parametreyi kullanmayacaktık). cmd.Parameters[“@RandomID”].Direction = ParameterDirection.Output; bu kısmı bu zamana kadar açıkcası bende bilmiyordum araştırdığımda ne anlama geldiğini öğrendim. Parameters dizisinin “@RandomID” parametresini OUTPUT yapmak için kullanılıyor. Bu işlemi yaptıktan sonra gönül rahatlığı ile Stored Procedure çalıştırılabilir. Son olarak işlem bittikten sonra değeri okumak için; cmd.Parameters[“@RandomID”].Value; kısmından değerimizi okuyabiliriz. object türünden olduğu için tür dönüşümü operatörünü kullanmak gerekiyor.

Umarım sizler için faydalı olmuştur, yeni bir makalede görüşmek üzere…

Herkese kolay gelsin, iyi çalışmalar…

2 Responses to C# ile Output Parametreli Stored Procedure Çalıştırmak!

    Bir cevap yazın

    Your email address will not be published. Please enter your name, email and a comment.