Sunday, October 15, 2017

ProjectBase ve QueryGenerator ile Veri Tabanı Prosedür İşlemleri

QueryGenerator ile veri tabanı prosedür veya fonksiyonlarına erişmek için öncelikle örnek veri tabanı fonksiyonlarını oluşturalım:

FUNCTION "GETUSERNAME" (
  "PARAM1" IN NUMBER) RETURN varchar2 IS

  RETURN_VAL varchar2(150);

BEGIN 

  select FIRST_NAME ||' ' || LAST_NAME into RETURN_VAL from employees where employee_id = PARAM1;
  
  RETURN RETURN_VAL;

END;


FUNCTION "GETSALARY" (
  "PARAM1" IN NUMBER) RETURN number IS

  RETURN_VAL NUMBER;

BEGIN 
  
  select SALARY into RETURN_VAL from employees where employee_id = PARAM1;

  RETURN RETURN_VAL;

END;

Yukarıda string değer döndüren "GETUSERNAME" ve decimal değer döndüren "GETSALARY" fonksiyonlarını oluşturduk. Aşağıda gibi bu fonksiyonları .NET projemiz içinde kullanabiliriz:

var db = DatabaseFactory.GetDbObject();
var gen = QueryGeneratorFactory.GetDbObject();

gen.ProcedureName = "GETSALARY";
gen.AddDataParameter("RETURN_VAL", DbType.Decimal, null, 150, System.Data.ParameterDirection.ReturnValue);
gen.AddDataParameter("PARAM1", 100);

db.ExecuteQuery(gen.GetProcedure());

var return_val = gen.GetParameterValue("RETURN_VAL");

string gen2 = QueryGeneratorFactory.GetDbObject();

gen2.ProcedureName = "GETUSERNAME";
gen2.AddDataParameter("RETURN_VAL", DbType.String, null, 150, System.Data.ParameterDirection.ReturnValue);
gen2.AddDataParameter("PARAM1", 100);

db.ExecuteQuery(gen2.GetProcedure());

decimal return_val2 = gen2.GetParameterValue("RETURN_VAL");

Yukarıda görüldüğü üzere QueryGenerator ile standart bir kod arayüzü ile fonksiyon ve prosedür erişimleri yapılabilmektedir.

"Bu yazıda "Oracle Managed Provider", Oracle 11g Express Edition ve HR şeması test verileri kullanılmıştır."

"https://github.com/vyigity/ProjectBase"

No comments:

Post a Comment