Ağustos 11, 2010

Asp.Net ile Oracle Stored Procedure kullanmak

Asp.Net ile yazılım geliştirirken Oracle VT içerisindeki prosedürleri kullanmak çeşitli kod yazım örnekleri mevcuttur,hepsi aynı işlemi yapmaktadır.
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();
Farklı bir yazım örneği verecek olursak;
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();

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;

CREATE OR REPLACE PROCEDURE PROCEDURE_ADI(personelid in varchar,personeladi in varchar,personelsoyadi IN OUT varchar) IS
BEGIN
SELECT psoyadi into personelsoyadi  FROM personelWHERE pid= ''||personelid||'' and padi= ''||personeladi||'
END PROCEDURE_ADI;
/
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.

Hiç yorum yok:

Yorum Gönder

System.Text.Json.JsonException hatası - cycle or if the object depth is larger than the maximum allowed depth of 32.

 Eğer .net'te aşağıdaki hatayı alıyorsanız; " A possible object cycle was detected which is not supported. This can either be due t...