Generator, trigger, indekslar va cheklovlar yaratish



Download 48,95 Kb.
Sana30.03.2022
Hajmi48,95 Kb.
#518169
Bog'liq
27-maruza

Bazada saqlanuvchi protseduralar yaratish

Saqlanuvchi protseduralar

Saqlanuvchi protsedura (stored procedure) – bu ixtiyoriy hajmdagi kompilyastiyalangan SQL tilidagi dastur bo’lib, boshqa ob’ektlar bilan birgalikda ma’lumotlar bazasida saqlanadi.

Saqlanuvchi protsedura ma’lumotlar bazasi bilan ishlaydigan dastur jihatidan serverda bajariladigan qism dastur hisoblanadi. Ma’lumotlar bazasi jihatidan Mbda yaratiladigan va saqlanadigan obyekt hisoblanadi.

Ularga mijoz dasturlari orqali murojaat qilinadi. Bunda bitta protsedura yuzlab mijozlar tomonidan chaqirilishi mumkin.

Saqlanuvchi protseduralar

Saqlanuvchi protsedura Saqlanuvchi protseduralar ikkita asosiy turga bo’linadi:

  • tanlash protseduralari (select procedure)
  • Tanlash protsedurasi SELECT operatorida jadval o’rnida ishlatiladi va ma’lumotlar to’plamini ifodalaydi.

  • bajariluvchi protseduralar (executable procedure).
  • Bajariluvchi protsedura uchun bu narsa shart emas.

    Saqlanuvchi protseduralar CREATE PROCEDURE buyrug’i yordamida yaratiladi va DROP PROCEDURE buyrug’i yordamida o’chiriladi.

Tanlash protseduralari

Staff .gdb ma’lumotlar bazasida bo’yso’nuvchi bo’limlar ro’yxatini hosil qiluvchi protsedurani yaratamiz. Bu yerda, korxona ierarxik strukturali bo’limlarga ega.

DEPS jadvalining ParentDeptID maydonida tegishli bo’limning identifkatori ko’rsatiladi.

Agar tegishli bo’lim mavjud bo’lmasa, bo’lim ierarxiyaning yuqorisida bo’ladi va ParentDeptID maydoniga 0 qiymati kiritiladi.

SET TERM ^ ;

CREATE PROCEDURE ChildDeptsList (pDeptID integer)

RETURNS (rDeptFullName varchar(100))

AS BEGIN

FOR SELECT DeptFullName FROM DEPS

WHERE ParentDeptiD =:pDeptID

INTO :rDeptFullName

DO SUSPEND;

END

Tanlash protseduralari

Bu protsedurada yuqori bo’limning identifikatori bo’lgan pDeptiD parametr uzatiladi va natija sifatida bo’yso’nuvchi korxonalar ro’yxati qaytariladi. Tanlash protsedurasida qaytariluvchi ma’lumotlar RETURNS kalit so’zi orqali aniqlanadi. Kiritiluvchi parametrlar esa protsedura nomidan keyin yoziladi.

Natijaviy qatorni hosil qilish uchun FOR SELECT . . . DO konstrukstiyasi ishlatiladi. SUSPEND buyrug’i keyingi so’rovgacha protsedurani to’xtatadi. To’xtashdan oldin natija chiqariladi.

Bajariluvchi prostedurlar

Bajariluvchi protseduralarda RETURNS operatori ishlatilmasligi mumkin. Xodim haqidagi ma’lumotlarni o’chirish protsedurasini tuzamiz.

SET TERM ^ ;

CREATE PROCEDURE DeleteEmp (pEmpID integer)

AS BEGIN

DELETE FROM STAFF

WHERE ID = :pEmpID;

END

Aralash protseduralar

Ba’zi hollarda protseduralarni ham tanlash ham bajariluvchi sifatida ishlatish mumkin.

Misol sifatida oylik ish haqini hisoblash prosedurasini olaylik.

MS SQL Serverda ushbu prosedura quyidagicha bo’ladi:

USE [bh]

GO

SET ANSI_NULLS ON

GO

SET QUOTED_IDENTIFIER ON

GO

Aralash protseduralar

ALTER PROCEDURE [dbo].[hisobla] @oy int , @yil int , @tabelnomerr int, @BulimID int AS

declare @xodimlarID int, @i int,@lavozim int,@ishhajmi int ,@ishhajmi1 int ,@ishkuni int,@kasalkuni int,@tatilkuni int,@safarkuni int,@oklad102 float,@tabelnomer int,@PK int

select @ishkuni=ishkuni from ishkunlarish where oy=@oy and yil=@yil

if @ishkuni is null

begin

raiserror('Ушбу ой учун тўлик иш кунлари киритилмаган.',16,1)

end

if @tabelnomerr=0

begin

select @i=count(*) from tabellarsh where oy=@oy and yil=@yil and (xodimlarID in(select XodimlarID from XodimlarLavozimlari where XodimlarLavozimlari.BulimlarID=@BulimID))

end

else

Aralash protseduralar

begin

select @i=count(*) from tabellarsh where oy=@oy and yil=@yil and tabelnomer=@tabelnomerr

end

declare @imtiyoz float

set @imtiyoz=0

while @i!=0

begin

if @tabelnomerr=0

begin

DECLARE acursor SCROLL CURSOR FOR

select tabelnomer,lavozim,ishhajmi,kasallik,tatil,xizmatsafar,oy,yil,xodimlarID from tabellarsh where oy=@oy and yil=@yil and (xodimlarID in(select XodimlarID from XodimlarLavozimlari where XodimlarLavozimlari.BulimlarID=@BulimID))

OPEN acursor

FETCH RELATIVE @i FROM acursor into @tabelnomer,@lavozim,@ishhajmi1,@kasalkuni,@tatilkuni,@safarkuni,@oy,@yil,@xodimlarID

CLOSE acursor

DEALLOCATE acursor

end

Aralash protseduralar

else

begin

DECLARE acursor SCROLL CURSOR FOR

select tabelnomer,lavozim,ishhajmi,kasallik,tatil,xizmatsafar,oy,yil,xodimlarID from tabellarsh where oy=@oy and yil=@yil and tabelnomer=@tabelnomerr

OPEN acursor

FETCH RELATIVE @i FROM acursor into @tabelnomer,@lavozim,@ishhajmi1,@kasalkuni,@tatilkuni,@safarkuni,@oy,@yil,@xodimlarID

CLOSE acursor

DEALLOCATE acursor

end

set @i=@i-1

exec nachisleniyalavozim @tabelnomer,@lavozim,@oy,@yil

……………………………………………………………………………………………. va hokazo.


Download 48,95 Kb.

Do'stlaringiz bilan baham:




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©hozir.org 2024
ma'muriyatiga murojaat qiling

kiriting | ro'yxatdan o'tish
    Bosh sahifa
юртда тантана
Боғда битган
Бугун юртда
Эшитганлар жилманглар
Эшитмадим деманглар
битган бодомлар
Yangiariq tumani
qitish marakazi
Raqamli texnologiyalar
ilishida muhokamadan
tasdiqqa tavsiya
tavsiya etilgan
iqtisodiyot kafedrasi
steiermarkischen landesregierung
asarlaringizni yuboring
o'zingizning asarlaringizni
Iltimos faqat
faqat o'zingizning
steierm rkischen
landesregierung fachabteilung
rkischen landesregierung
hamshira loyihasi
loyihasi mavsum
faolyatining oqibatlari
asosiy adabiyotlar
fakulteti ahborot
ahborot havfsizligi
havfsizligi kafedrasi
fanidan bo’yicha
fakulteti iqtisodiyot
boshqaruv fakulteti
chiqarishda boshqaruv
ishlab chiqarishda
iqtisodiyot fakultet
multiservis tarmoqlari
fanidan asosiy
Uzbek fanidan
mavzulari potok
asosidagi multiservis
'aliyyil a'ziym
billahil 'aliyyil
illaa billahil
quvvata illaa
falah' deganida
Kompyuter savodxonligi
bo’yicha mustaqil
'alal falah'
Hayya 'alal
'alas soloh
Hayya 'alas
mavsum boyicha


yuklab olish