1 Mart 2011 Salı

C# Oracle Stored Procedure kullanimi


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
 
Share: