|
Sql-so’rovlarlar bilan ishlashda saqlanadigan protseduralar va foydalanuvchi funksiyalari alohida ahamiyatga ega. C#
|
bet | 35/53 | Sana | 30.11.2023 | Hajmi | 1,39 Mb. | | #108476 |
Bog'liq Dasturiy injiniringSql-so’rovlarlar bilan ishlashda saqlanadigan protseduralar va foydalanuvchi funksiyalari alohida ahamiyatga ega. C# tilida Sql Server ning foydalanuvchi funksiyasini chaqirishni ko’rib chiqamiz.
Avvalo funksiyani hosil qilamiz. Bizning ma’lumotlar kontekstimizda quyidagi modellar aniqlangan bo’lsin:
class PhoneContext : DbContext
{
public PhoneContext()
: base("DBConnection")
{ }
public DbSet Companies { get; set; }
public DbSet Phones { get; set; }
}
class Company
{
public int Id { get; set; }
public string Name { get; set; }
public ICollection Phones { get; set; }
public Company()
{
Phones = new List();
}
}
class Phone
{
public int Id { get; set; }
public string Name { get; set; }
public int Price { get; set; }
public int CompanyId { get; set; }
public Company Company { get; set; }
}
Endi Visual Studio muhitining Database Explorer oynasidan DBni ochib olamiz. Buning uchun Database Explorer oynasidan Connect to Database tugmasini bosamiz:
Ushbu ro'yxatdan zarur DBni tanlaymiz. Bizning misolda DB sifatida phonesdb ishlatiladi.
DB ochilganidan so’ng Database Explorer oynadan Functions qismini topamiz va unga sichqonchaning o’ng tugmasini bosish lozim. Hosil qilingan kontekstli menyudan Add New -> Table-valued Function qismini tanlash lozim:
So’ngra, Visual Studio quyidagi kodga ega bo’lgan skriptni generatsiya qiladi:
CREATE FUNCTION [dbo].[Function]
(
@param1 int,
@param2 char(5)
)
RETURNS @returntable TABLE
(
c1 int,
c2 char(5)
)
AS
BEGIN
INSERT @returntable
SELECT @param1, @param2
RETURN
END
Ushbu skript (funksiya)ni quyidagicha o’zgartirib olamiz:
CREATE FUNCTION [dbo].[PhonesByPrice'>GetPhonesByPrice]
(
@price int
)
RETURNS @returntable TABLE
(
Id int,
Name nvarchar(50),
Price int,
CompanyId int
)
AS
BEGIN
INSERT @returntable
SELECT * FROM Phones WHERE Price < @price
RETURN
END
CREATE FUNCTION [dbo].[GetPhonesByPrice] ifodasi orqali GetPhonesByPrice funksiyasi hosil qilinadi. Ushbu yozuvdan so’ng parametrlar ro'yxati keltiriladi. Bizning funksiyamiz faqat bitta int tipiga mansub @price parametrini qabul qiladi.
So’ngra funksiya qaytaradigan natija RETURNS @returntable TABLE ifodasi orqali aniqlangan. Qavslar ichida qaytariluvchi jadval o’zining ustunlari bilan aniqlangan. Bizning misolda ushbu natija tipi Phones jadvaliga mos tuzilmaga ega. Ya’ni ushbu jadval Phone klassiga mansub ob’ektlarni o’zida saqlaydi.
|
| |