OracleCommand comm = new OracleCommand(); 'Yeni command nesnesi tanımlıyoruz comm.CommandText = "procedure_adı"; 'Prosedürümüzün adını buraya yazıyoruz comm.Connection = conn; 'Command Connection ı conn nesnemize eşitliyoruz comm.CommandType = CommandType.StoredProcedure; 'Komut tipinin s.prosedür olduğunu belirtiyoruz.
Aşağıda ise oracle stored procedure e göndereceğimiz değerleri ve geri dönecek değeri belirtiyoruz
comm.Parameters.Add("personelid", OracleType.VarChar, 2000).Value = değer; comm.Parameters["personelid"].Direction = ParameterDirection.Input; comm.Parameters.Add("personeladi", OracleType.VarChar, 2000).Value = değer; comm.Parameters["personeladi"].Direction = ParameterDirection.Input; comm.Parameters.Add("personelsoyadi", OracleType.VarChar, 2000).Direction = ParameterDirection.Output; 'geri dönecek değer comm.ExecuteNonQuery(); output = comm.Parameters["personelsoyadi"].Value.ToString();
OracleConnection conn = new OracleConnection(connStr); OracleParameter param1 = new OracleParameter(); param1.ParameterName = "personelid"; param1.OracleType = OracleType.VarChar; param1.Size =2000; param1.Direction = ParameterDirection.Input; param1.Value=değer; OracleParameter param2 = new OracleParameter(); param2.ParameterName = "personeladi"; param2.OracleType = OracleType.VarChar; param2.Direction = ParameterDirection.Input; param2.Size = 2000; param2.Value=değer; OracleParameter param3 = new OracleParameter(); param2.ParameterName = "personelsoyadi"; param2.OracleType = OracleType.VarChar; param2.Direction = ParameterDirection.Output; param2.Size = 2000; OracleParameter[] oraParams = new OracleParameter[] { param1, param2 }; OracleCommand cmd = new OracleCommand(“PROCEDURE_ADI”, conn); cmd.CommandType = CommandType.StoredProcedure; cmd.Parameters.AddRange(oraParams); conn.Open(); object result = cmd.ExecuteScalar(); conn.Close();
</div>
Yukardaki işlemle Oracle Veritabanında bulunan procedure_adı adındaki procedure
‘i Asp.net C# ile kullanmış olduk.Kullandığımız procedure’in kodları ise;
<div id="codeview">
CREATE OR REPLACE PROCEDURE PROCEDURE_ADI (personelid in varchar,personeladi in varchar,personelsoyadi IN OUT varchar) IS BEGIN SELECT psoyadi into personelsoyadi FROM personel WHERE pid= "||personelid||" and padi= "||personeladi||" END PROCEDURE_ADI; /
</div>
Dikkat etmemiz gereken nokta biz burada input ve output değerlerini OracleType.VarChar olarak belirledik.Eğer OracleType.VarChar olarak belirlediğimiz değerlere “size” değeri atamazsak
“No size set for variable length data type: String”
hatası ile karşılaşırız.Bu hata ile karşılaşmamak için OracleType.VarChar tipindeki verimizin Size ına değer belirtmeliyiz