Internet Derazalar Android
Kengaytirmoq

Ma'lumotlar bazasida qanday protseduralar mavjud? Sql Server MS-da saqlangan protseduralar

Ishning maqsadi - Ma'lumotlar bazasi serverida saqlanadigan protseduralarni qanday yaratishni va ulardan foydalanishni o'rganing.

1. Barcha misollarni o'rganish, SQL Serverni boshqarish studiyasi yordamida amalga oshiriladigan SQL-Servisni boshqarish natijalarini tahlil qilish. Joriy ma'lumotlar bazasida yaratilgan jarayonlar mavjudligini tekshirish.

2. Laboratoriya ishi davomida barcha misollar va vazifalarni bajaring.

3. Shaxsiy topshiriqlarni variantlar bo'yicha bajaring.

Ishning izohi

Dasturlashda saqlangan protseduralarni mast qilish uchun, ma'lumotlar bazasi ma'lumotlar bazasi bo'lganda ma'lumotlar bazasidan foydalaning DB_BOWSS.Qaysi laboratoriya ishlarida 1-sonli laboratoriya ishlarida yaratilgan. Misollar va vazifalarni bajarishda ma'lumotlar bazasi, jadvallar va boshqa loyihalar nomlariga rioya qilish uchun to'lash.

Saqlangan protseduralar Bir yoki bir nechta SQL yoki funktsiyalardan iborat bo'lgan buyruqlar to'plamlari mavjud va ma'lumotlar bazasida kompilyatsiya shaklida saqlanadi.

Saqlangan protseduralar turlari

Tizim saqlangan protseduralar turli ma'muriy harakatlarni amalga oshirishga qaratilgan. Deyarli barcha server ma'muriyati xatti-harakatlari ularning yordami bilan amalga oshiriladi. Aytish mumkinki, tizimni saqlagan protseduralar tizim jadvallari bilan ishlashni ta'minlaydigan interfeys hisoblanadi. Tizim saqlangan protseduralar SP_ prefiksi mavjud, tizimlar ma'lumotlar bazasida saqlanadi va boshqa ma'lumotlar bazasining kontekstida bo'lishi mumkin.

Shaxsiy saqlangan protseduralar muayyan harakatlarni amalga oshiradi. Saqlangan protseduralar - to'liq ma'lumotlar bazasi ob'ekti. Natijada, har bir saqlanadigan protsedura ma'lum ma'lumotlar bazasida joylashgan, u erda amalga oshiriladigan.

Vaqtincha saqlangan protseduralar atigi bir muncha vaqt, shundan so'ng ular avtomatik ravishda server tomonidan yo'q qilinadi. Ular lula va globalga bo'lingan. Mahalliy vaqtincha saqlanadigan protseduralar faqat u yaratilgan birikmadan kelib chiqishi mumkin. Bunday protsedura yaratishda, u bitta belgidan boshlab ismini berish kerak. Har qanday vaqtinchalik narsalar singari, ushbu turdagi saqlanadigan protseduralar serverni qayta yoqilganda avtomatik ravishda o'chiriladi, qayta yoqilgan yoki to'xtatiladi. Global Vaqtincha saqlanadigan protseduralar bir xil tartibda bo'lgan har qanday server ulanishlari uchun mavjud. Buni aniqlash uchun, uni ## belgilardan boshlangan nom berish kifoya. Ushbu protseduralar serverni qayta ishga tushirish yoki to'xtatish paytida, shuningdek ulanishni tugatgandan so'ng, ular yaratilgan kontekstda o'chiriladi.

Saqlangan protseduralarni yaratish, o'zgartirish

Saqlangan protsedura yaratish quyidagi yo'nalishlarning qarorini o'z ichiga oladi: rejalashtirish huquqi. Saqlangan protsedura yaratishda, u foydalanuvchi yaratgan ma'lumotlar bazasi ob'ektlariga bir xil kirish huquqiga ega bo'lishini yodda tutish kerak; Do'kon protseduralari parametrlarini aniqlash, saqlangan protseduralar kirish va chiqish parametrlari bo'lishi mumkin; Kod ta'minlangan tartibda. Jarayon kodi har qanday SQL buyruqlarining ketma-ketligini o'z ichiga olishi mumkin, shu jumladan boshqa saqlangan protseduralar bilan.

SQL serveri belgilarida yangi saqlangan protseduraning yangi yoki o'zgarishi operatori sintaksisi:

(Yaratish | ALSURE) PROP [; raqam] [(@ parametre_datae tyce_data) [\u003d N] [Ichki, (qayta ishlash | qayta ishlash | qayta ishlash, shifrlash)]] [Replikatsiya uchun] SQL_ Operator [... N]

Ushbu buyruq parametrlarini ko'rib chiqing.

SP_, #, ## Prefiksni protsedura asosida yaratgan holda tizimli yoki vaqtinchalik deb ta'riflanishi mumkin. Buyruq sintaksisidan ko'rinib turibdiki, protsedura yaratilgan, shuningdek, ma'lumotlar bazasining nomi, shuningdek u joylashtirilgan ma'lumotlar bazasining nomini belgilashga ruxsat berilmaydi. Shunday qilib, belgilangan tartibda ma'lum ma'lumotlar bazasida joylashtirish uchun siz ushbu ma'lumotlar bazasi kontekstida siz tartibga solish tartibini boshqarishingiz kerak. Saqlangan protseduraning tanasi bilan bir xil ma'lumotlar bazasi ob'ektlariga murojaat qilganda, siz kisbulatchi ismlardan foydalanishingiz mumkin, i.e. ma'lumotlar bazasining nomini belgilamasdan foydalanishingiz mumkin. Boshqa ma'lumotlar bazalarida joylashgan ob'ektlarga murojaat qilishingiz kerak bo'lganda ma'lumotlar bazasi nomi kerak.

Kirish va chiqish ma'lumotlarini yaratilgan tartibda o'tkazib yuborish uchun parametr nomlari @ belgidan boshlanishi kerak. Bir saqlangan protseduralarda siz vergul bilan ajratilgan ko'plab parametrlarni o'rnatishingiz mumkin. Jarayon tanasida mahalliy o'zgaruvchilar qo'llanilmaydi, ularning ismlari ushbu protseduraning parametrlarining nomlariga to'g'ri keladi. Saqlangan protseduraning ushbu parametrlarining turini aniqlash uchun har qanday SQL ma'lumotlar turlari mos, shu jumladan foydalanuvchi tomonidan belgilangan. Biroq, kursor ma'lumot turi faqat saqlangan protseduraning chiqish parametri sifatida ishlatilishi mumkin, i.e. Kalit so'z chiqishi bilan.

Chiqish kalit so'zining mavjudligi tegishli parametrni saqlangan protseduradan qaytarish uchun mo'ljallanganligini anglatadi. Biroq, bu parameter qiymatlarni saqlanadigan protseduradagi qiymatlarni uzatish uchun mos emas degani emas. Chiqish kalit so'zini ko'rsatish serverga serverni o'rnatiladigan protseduraning joriy qiymatini berish uchun saqlangan protsedurani berishda, protsedura parametr qiymati deb nomlanganda ko'rsatilgan. Shuni yodda tutingki, kalit so'z chiqishni ko'rsatganda, protsedurani chaqirish paytida tegishli parametrning qiymati faqat mahalliy o'zgaruvchidan foydalanish mumkin. An'anaviy parametrlar uchun har qanday iboralar yoki doimiy konteynaviyatlardan foydalanish taqiqlanadi. Turli xil kalit so'z kursor turi bo'lgan chiqish parametrlari bilan birgalikda ishlatiladi. Chiqarish parametri paydo bo'lgan natijani aniqlaydi.

Odatiy kalit so'z - bu tegishli parametrni qabul qiladigan qiymat. Shunday qilib, protsedura chaqirilganda, siz tegishli parametrning qiymatini aniqlay olmaysiz.

Server kesayotganidan keyin so'rovnomani bajarish rejasi va tuzilgan kod, keyinchalik protseduralar allaqachon tayyor bo'ladi. Biroq, ba'zi hollarda, protseduraning kodeksini qayta bajarish kerak. Kalit so'zni qayta ishlashni tavsiflovchi har bir qo'ng'iroq uchun saqlanadigan protsedura rejasini tuzish tizimini belgilaydi.

Replikatsiya parametri ma'lumotlar bilan to'ldirilganda talabga binoan talabga binoan va yaratilgan protsedurani nashr etishdagi maqola sifatida kiritish. Shifrlash kalit so'zi serverga saqlangan protseduralar ishini amalga oshiradigan mualliflik huquqi algoritmlaridan foydalanishni ta'minlaydigan saqlangan protseduraning kodini shifrlash to'g'risida guvohnoma beradi. Saqlangan protsedura tanasining boshida joylashgan kalit so'z. Jarayonning organida deyarli barcha SQL buyruqlari qo'llanilishi mumkin, e'lon qilingan tranzaktsiyalar, qulfni blokirovka qilish va boshqa saqlangan protseduralar bilan bloklash va qo'ng'iroq qilish. Saqlangan protseduraning chiqish qaytish buyrug'i yordamida amalga oshirilishi mumkin.

Saqlangan tartibni olib tashlash

Drop protsedurasi (ism) [, ... n]

Saqlangan tartib-qoidalarni bajarish

Saqlangan protsedurani bajarish uchun buyruq qo'llaniladi: [Ijro [UTE] Ism_Name [[qiymat | @_name_name) [chiqish] | [Odatiy]] [, ... n]

Agar saqlangan protseduraga qo'ng'iroq paketdagi yagona buyruq bo'lmasa, bajarilgan buyruqning mavjudligi talab qilinadi. Bundan tashqari, ushbu buyruq protsedurani boshqa protsedura yoki qo'zg'atuvchisining tanadan olishi kerak.

Jarayonni chaqirganda chiqish kalit so'zidan foydalanib, faqat asosiy so'z chiqishi bilan protsedurani yaratishda faqat e'lon qilingan parametrlar uchun echilgan.

Jarayonni qachon chaqirish paytida standart kalit so'z parametr uchun belgilangan bo'lsa, standart qiymat ishlatiladi. Aslida, belgilangan so'z standart faqat standart qiymat aniqlangan parametrlar uchun ruxsat etiladi.

Qabul qilingan buyruq sintaksisidan, parametr nomlarini protsedura chaqirilishi mumkinligi aniq. Biroq, bu holda foydalanuvchi parametrlar uchun qiymatlarni bir xil tartibda ko'rsatishi kerak, ularda protsedurani yaratishda ular ro'yxatiga kiritilgan. Standart qiymatni parametrga shunchaki ro'yxatga olinganda uni o'tish orqali belgilang, bu mumkin emas. Agar parametrlar talab qilinsa, unda standart qiymat aniqlangan bo'lsa, saqlangan protsedurani chaqirishda etarli darajada aniq parametr nomini ko'rsatadi. Bundan tashqari, bunday tarzda siz parametrlarni va ularning qadriyatlarini o'zboshimchalik bilan tartibda ro'yxatlashingiz mumkin.

Shuni yodda tutingki, protsedurani qiymatdagi parametrlarning ismlarini yoki parametrlarsiz qiymatlar ko'rsatilgan qiymatlar ko'rsatganda qayd etiladi. Ularning kombinatsiyasi ruxsat berilmaydi.

Saqlangan protseduraga qaytish

Belgilangan shartning istalgan nuqtasida protseduradan chiqish imkonini beradi, shuningdek protseduraning sifati va to'g'riligini baholashingiz mumkin bo'lgan raqam bilan protsedura natijalarini topshirishga imkon beradi. Parametrlarsiz protsedurani yaratish misoli:

Ruxsatnomalar sadosi_ kitoblarini kitoblardan tanlang (kod_ kitobi)

Mashq 1.

Hisoblash_ kitoblari.

Natijani ko'rib chiqing.

Kirish parametrlari bilan protsedurani yaratish misoli:

Sanalardan (kod_ kitobi) sahifalardan iborat (kod_ kitobi) ni tanlang (kod_ kitob_pazalari) ni tanlang.

2-vazifa.. Ushbu protsedurani SQL Serverni boshqarish studiyasi yordamida SQL serveri boshqarish studiyasi orqali DB_BOMBSS ma'lumotlarining saqlangan tartib bo'limida ushbu protsedurani yarating. Bu buyruqdan foydalanib ishlang

Ixtorlik_pazalar_pazalar 100.

Natijani ko'rib chiqing.

Kirish parametrlari bilan protsedurani yaratish misoli:

Tartibga solinganidek, CHIF (kod_ount_pages va @title kabi sarlavhalar va sarlavhasi kabi sarlavha va sarlavha_ kitobi sifatida

3-vazifa. Ushbu protsedurani SQL Serverni boshqarish studiyasi yordamida SQL serveri boshqarish studiyasi orqali DB_BOMBSS ma'lumotlarining saqlangan tartib bo'limida ushbu protsedurani yarating. Bu buyruqdan foydalanib ishlang

ISHLAB CHIQARISH_BOKES_TITLE 100, "P%"

Natijani ko'rib chiqing.

Kirish parametrlari va chiqish parametrlari bilan protsedurani yaratish misoli:

Tartibga solish - @ittogle \u003d @count_pages va @title kabi sarlavha_ploke va sarlavha_ploke-ni tanlang

4-vazifa. Ushbu protsedurani SQL Serverni boshqarish studiyasi yordamida SQL serveri boshqarish studiyasi orqali DB_BOMBSS ma'lumotlarining saqlangan tartib bo'limida ushbu protsedurani yarating. Buyruqni ishlating:

SQL\u003e @M Int Incac_Books_itogo 100, "p%", @q chiqish-ni tanlang.

Natijani ko'rib chiqing.

Kirish parametrlari bilan protsedurani yaratish misoli:

Go'yo go'yo @param int-protsedurani yarating (mualliflardan nomlangan mualliflar) ni tanlang (@ @ @param) \u003d "Pushkin A." Qaytish 1 yana qaytib kelish

5-band. Ushbu protsedurani SQL Serverni boshqarish studiyasi yordamida SQL serveri boshqarish studiyasi orqali DB_BOMBSS ma'lumotlarining saqlangan tartib bo'limida ushbu protsedurani yarating. Bu buyruqlar yordamida uni ishga tushiring:

@Return_status IT ishi 1-sonli "Qaytish holati" -ni tanlang \u003d @rreturn_status-ni tanlang

2-marta xaridlar jadvalida asosiy maydon qiymatini oshirish uchun parametrlarsiz protsedurani yaratish misoli:

Set-Code_purchase \u003d kod_purchaz * 2

6-vazifa. Ushbu protsedurani SQL Serverni boshqarish studiyasi yordamida SQL serveri boshqarish studiyasi orqali DB_BOMBSS ma'lumotlarining saqlangan tartib bo'limida ushbu protsedurani yarating. Bu buyruqdan foydalanib ishlang

ExTieTE yangi_proc

Muayyan mualliflar to'g'risidagi barcha ma'lumotlar uchun kiritish parametrlari uchun protseduraning misoli:

Seleutor-ni tanlang_Author_UT char (30) Nome_auttor \u003d @k

7-band.

Tegishli tanlangan "Pushkin A." Yoki Tanlash_AUT_AUTE @ K \u003d "Pushkin A." yoki Tanlash_AUT_AUTE_AUTE_A \u003d "Pushkin A."

Belgilangan jadvalda (sukut bo'yicha 2 marta) sotib olish jadvalidagi asosiy maydon qiymatini oshirish uchun kirish parametrlari va standart qiymati bilan ishlov berish tartibini yaratish misoli:

Set-ni yangilash uchun Prokotet_proc @p \u003d 2-ni yarating_purchase \u003d kod_purchaz * @p

Jarayon hech qanday ma'lumotlarni qaytarmaydi.

8-vazifa. Ushbu protsedurani SQL Serverni boshqarish studiyasi yordamida SQL serveri boshqarish studiyasi orqali DB_BOMBSS ma'lumotlarining saqlangan tartib bo'limida ushbu protsedurani yarating. Bu buyruqlar yordamida uni ishga tushiring:

Ixtmed_proc 4 yoki The Prote_poc @p \u003d 4 yoki Ixth Redestle_proc - Odatiy qiymat ishlatiladi.

Kirish va chiqish parametrlari bilan protsedurani yaratish misoli. Belgilangan davrda bajarilgan buyurtmalar sonini aniqlash tartibini yarating:

@ D2 kichiklashtirish, @c \u003d isnull (@C, 0) bo'lgan Sana_C-ni tanlang.

9-vazifa. Ushbu protsedurani SQL Serverni boshqarish studiyasi yordamida SQL serveri boshqarish studiyasi orqali DB_BOMBSS ma'lumotlarining saqlangan tartib bo'limida ushbu protsedurani yarating. Bu buyruqlar yordamida uni ishga tushiring:

@ C2 INT INCE_PURCHASES '01 - Jun 2006 ', '01 - 2006', @ c2 ni tanlang

K ning variantlari. laboratoriya ishlari №4

Umumiy holat. Yaratish uchun SQL server menejmenti studiyasi yangi sahifa Kod uchun ("So'rovni yaratish" tugmasi uchun. Dastur Operatordan foydalangan holda Faol DB_BOWS ma'lumotlar bazasini dasturiy jihatdan ishlab chiqaradi. Saqlangan protseduralarni yaratishda operatsion operatorlardan foydalanib, protseduralar nomlarini mustaqil ravishda aniqlang. Har bir protsedura ikkinchi laboratoriya ishlarida amalga oshirilgan bitta SKL so'rovini amalga oshiradi. Bundan tashqari, SQL so'rov kodi o'zgartirilishi uchun ularni izlash amalga oshiriladigan dala qiymatlariga etkazilishi uchun ularni o'zgartirish kerak.

Masalan, 2-laboratoriya ishlarining boshlang'ich vazifasi va so'rovi:

/ * Ma'lumotlar kitob provayderlaridan (etkazib berish jadvali) nomlari, telefonlari va inns (Nome_company, telefon va Inxona maydonlarini tanlang), uning kompaniyasi (OAO World).

Ism_company \u003d "OAO World" ni nomlashdan NAME_COMPANY, ANTTER, STE_COMPANY-dan tanlang.

* / - bu ish tartibi yaratiladi:

"Tan-ni tanlang_name_company @comp char char (30) ni tanlang_compy \u003d @comp

- Jarayon tartibi buyruq tomonidan qo'llaniladi:

ITRAQ TELE_NAME_COMPANIYA "OAJ olami"

Vazifalar ro'yxati

SQL Serverni boshqarish bo'yicha studiyadagi yordam dasturida yangi dastur yarating. 1-sonli laboratoriya ishlarida 1-sonli laboratoriya ishlarida tashkil etilgan faol individual ma'lumotlar bazasini dasturiy ravishda yarating. Saqlangan protseduralarni yaratishda operatsion operatorlardan foydalanib, protseduralar nomlarini mustaqil ravishda aniqlang. Har bir protsedura alohida vazifalar shaklida ko'rsatilgan bitta SKL so'rovini amalga oshiradi.

1 variant

1. Kamida bitta bolaga ega bo'lgan xodimlar ro'yxatini bekor qilish.

2. Belgilangan davrda sovg'alar bergan bolalarning ro'yxatini olib qo'yish.

3. Voyaga etmagan bolalarga ega bo'lgan ota-onalarning ro'yxatini olib qo'yish.

4. Belgilangan raqamdan ko'proq qiymatga ega bo'lgan sovg'alar to'g'risida ma'lumot olish.

2-variant.

1. Belgilangan turdagi asboblar ro'yxatini ko'rsating.

2. Ta'mirlangan qurilmalarning sonini va belgilangan sehrgarda ta'mirlash xarajatlarining umumiy qiymati.

3. Tanlovlar soni kamayayotgan apellyatsiyalar soni bo'yicha tartiblangan asboblar egalari va ularning murojaatlari sonini olib kelish.

4. Magistrlar haqidagi ma'lumotlarni belgilangan raqamdan yoki belgilangan sanadan kam bo'lmagan qabul qilingan kunni ko'rsatadi.

3-variant.

2. Sotilgan ranglar sotiladigan raqamlar ro'yxatiga kiritilgan savdo kodlari ro'yxatini ko'rsatish.

3. Belgilangan sotish kodida sotishni, miqdorni, sotuvchi va gulni olib tashlang.

4. Belgilangan raqam balandligi yoki gullash balandligi bilan gullar va sinflar ro'yxatini ko'rsating.

4-variant.

1. Giyohvand moddalar ro'yxatini foydalanish uchun belgilangan ko'rsatma bilan olib chiqish.

2. Bir xil preparatning belgilangan miqdoridan ko'proq sotilgan etkazib berishlar ro'yxatini ko'rsatish.

3. Yetkazib berish sanasini, miqdorini, old tomonning sarlavhasini etkazib beruvchidan va belgilangan raqamdan ko'proq kvitans kodini olish uchun olib chiqish.

5-variant.

2. Ko'rsatilgan sabab uchun yozma uskunalar ro'yxatini namoyish eting.

3. Belgilangan davrda yozilgan dasturni qabul qilingan kundan, Uskunaning nomi, mas'uliyatli va hisobga olinishi sanasi ko'rsatilgan muddatda.

4. Belgilangan turdagi asboblar ro'yxatini yoki kvitansiya sanasi ma'lum qiymatdan ko'proq narsani ko'rsating.

6 variant.

1. Belgilangan raqamdan ko'proq vaznli idishlar ro'yxati.

2. Sarlavhaning belgilangan qismi topilgan mahsulotlar ro'yxatini bekor qilish.

3. Mahsulot hajmini, idning ismi, mahsulotning ismi belgilangan boshlang'ich qiymatdan ma'lum bir oxirgi qiymat bilan olib tashlang.

4. Tayyorlash jarayonini va uglevodlar miqdori ma'lum bir qiymatdan katta yoki kaloriya miqdoridan katta yoki miqdordagi kaloriya miqdoridan kattaroq bo'lganligini ko'rsating.

7 variant.

1. Ushbu post bilan xodimlar ro'yxatini bekor qilish.

3. Belgilangan davrda ro'yxatdan o'tkazilgan hujjatlar uchun ro'yxatdan o'tkazilgan sana, hujjat turi, ro'yxatdan o'tkazuvchi nomi va tashkilotning nomi.

4. Ro'yxatga olingan hujjatlar ro'yxatini ma'lum bir hujjat yoki ro'yxatdan o'tkazilgan sana belgilangan qiymatdan kattaroqdir.

Variant 8.

1. Ishlayotgan sababi bo'lgan ishchilar ro'yxatini bekor qilish.

3. Ro'yxatdan o'tish kunini bekor qilmoqchi bo'lgan kundan keyingi davr, ish beruvchining nomi belgilangan muddatda ro'yxatdan o'tgan hujjatlar uchun ro'yxatdan o'tgan hujjatlar uchun.

9 variant.

1. Belgilangan turdagi ta'tilni jasorat qiladigan xodimlar ro'yxatini bekor qilish.

2. Belgilangan davrda ro'yxatga olish sanasi to'g'risidagi hujjatlar ro'yxatini tuzing.

3. Ro'yxatdan o'tish sanasini, ta'til turi, ushbu davrda ro'yxatdan o'tgan hujjatlar uchun xodimning xodimi.

4. Belgilangan diapazonda hujjat kodi bilan ro'yxatdan o'tgan hujjatlar ro'yxatini namoyish eting.

10 variant.

1. Ushbu post bilan xodimlar ro'yxatini bekor qilish.

2. Kalomning belgilangan qismi topilgan hujjatlar ro'yxatini bekor qilish.

3. Belgilangan davrda ro'yxatdan o'tgan hujjatlar uchun ro'yxatdan o'tgan sana, hujjat turi, jo'natuvchining matbuot va tashkilot nomi.

4. Ro'yxatdan o'tgan hujjatlar ro'yxatini belgilangan hujjat yoki ma'lum bir qiymatdan kam bo'lmagan hujjat kodi bilan ko'rsating.

11 variant.

1. Belgilangan lavozimga tayinlangan ishchilarning ro'yxatini bekor qilish.

2. Belgilangan davrda ro'yxatga olish sanasi to'g'risidagi hujjatlar ro'yxatini tuzing.

3. Belgilangan davrda ro'yxatdan o'tgan hujjatlar uchun ro'yxatdan o'tish sanasi, pozitsiyasi, to'liq ismi.

4. Belgilangan diapazonda hujjat kodi bilan ro'yxatdan o'tgan hujjatlar ro'yxatini namoyish eting.

12-variant.

3. Apellyatsiyalar soni bo'yicha saralash bo'yicha jihozlar va ularning murojaatlari sonini olib yuradigan uskunalar ro'yxatini olib qo'yish.

13 variant.

1. Belgilangan turdagi uskunalar ro'yxatini ko'rsating. 2. Muayyan xodimni yozib olgan uskunalar ro'yxatini ko'rsating.

3. Uskunalar bo'yicha guruhlangan yozma uskuna miqdorini ko'rsating.

4. Ishlab chiqarish sanasi bilan xodimlar haqidagi ma'lumotlarni ma'lum bir sanadan ko'proq ma'lumotni namoyish eting.

Variant 14.

1. Belgilangan varaq turi bilan gullar ro'yxatini ko'rsating.

2. Sotilgan ranglar ma'lum qiymatdan ko'proq bo'lgan daromadlar kodlari ro'yxatini sim qiling.

3. Yetkazib beruvchining ma'lum kodida olingan sana, etkazib beruvchi va ranglarning miqdori, miqdori va ranglarining nomlarini olib tashlang.

4. ma'lum bir son yoki gullashdan ko'proq balandlikdagi gullar va gullar uchun ranglar ro'yxati.

15 variant.

1. Belgilangan davrda raqamlarga kelgan mijozlar ro'yxatini bekor qilish.

2. Har bir mijoz uchun to'lovlarning umumiy miqdorini olish.

3. Kelish kunini, xonaning turini, belgilangan muddatda ro'yxatdan o'tgan mijozlarning ismlarini olib tashlang.

4. Ro'yxatdan o'tgan mijozlar ro'yxatini ma'lum bir turda sim qiling.

16-variant.

1. Belgilangan turdagi uskunalar ro'yxatini ko'rsating.

2. Ijaraga olish uchun ma'lum mijozni olib kelgan uskunalar ro'yxatini joylashtiring.

3. Quritalar varaqasini yollash uchun ishlatiladigan va murojaatlari sonining sonini qisqartirish uchun va ularning murojaatlari sonining ro'yxatini bekor qilish.

4. Notanish ma'lumotlari manzillar bo'yicha tartiblanadi.

Variant 17.

1. Xaridlar bilan qiymatlar ro'yxatini belgilangan qiymatdan ko'proq yoki belgilangan raqamdan ko'proq qiymatga ega bo'lgan qiymatlarni ko'rsatish.

2. Belgilangan so'z topilgan sarlavhali moddiy qiymatlarning joylarini joylashtirish.

3. Belgilangan diapazonda kod bilan qiymat qiymatining qiymatini olib tashlang.

4. Belgilangan diapazonda ish bilan bandlik sanasi bo'lgan moliyaviy javobgar shaxslar ro'yxatini namoyish eting.

Tanlov 18.

1. ro'yxati ta'mirlash ishlarima'lum bir usta tomonidan ijro etilgan.

2. Ishga kiritilgan ish bosqichlari ro'yxatini bekor qilish uchun ko'rsatilgan so'z topilgan.

3. Belgilangan diapazonda kod bilan ishlash uchun ishlash bo'yicha ishlarning narxi miqdorini olish.

4. Belgilangan diapazonda ish bilan band bo'lgan magistrlar ro'yxati bilan ishlov berish.

19 variant.

1. Giyohvand moddalar ro'yxatini ma'lum bir ko'rsatma bilan olib chiqish.

2. Ba'zi bir dorilar sotilganidan tashqari, cheklarni tekshirishlar ro'yxati.

3. Belgilangan raqam bilan tekshirish uchun sotilgan sana, summa, to'liq ismi va davolash.

4. Giyohvand moddalar ro'yxatini va dori-darmonlardagi paketli paketli paketli paketli paketli paketli, ma'lum bir qiymatdan kamroq bo'lganidan ko'proq.

20-variant.

1. Ushbu post bilan xodimlar ro'yxatini bekor qilish.

2. Kalomning belgilangan qismi topilgan hujjatlar ro'yxatini bekor qilish.

3. Belgilangan davrda ro'yxatdan o'tgan hujjatlar uchun ro'yxatdan o'tgan kunni, hujjat, to'liq ismi va ijro etilishi sanadan voz kechish.

4. Belgilangan hujjat turi yoki muayyan diapazonda hujjat kodi bilan ro'yxatdan o'tgan hujjatlar ro'yxatini ko'rsating.

Saqlangan protsedura - Bir marta kompilyatsiya qilingan va serverda saqlanadigan SQL ko'rsatmalari to'plamidir. Saqlangan protseduralar yuqori darajadagi tillar tartib-qoidalariga juda o'xshash bo'lib, ular kiritilishi va chiqishlari mumkin bo'lgan parametrlar va mahalliy o'zgaruvchilarga ega bo'lishi mumkin, ular o'zgaruvchilar va parametrlar tomonidan belgilanishi mumkin. Saqlangan protseduralarda bajarilishi mumkin standart operatsiyalar ma'lumotlar bazalari (DDL va DML). Bundan tashqari, saqlangan protseduralarda tsikllar va tarmoqlar amalga oshirilishi mumkin, ya'ni ular ijro etishni boshqarish bo'yicha ko'rsatmalardan foydalanishlari mumkin.

Saqlangan protseduralar foydalanuvchi tomonidan belgilangan xususiyatlarga o'xshash (UDF). Asosiy farq shundaki, foydalanuvchi funktsiyalaridan boshqa biron bir ifoda sifatida foydalanish mumkin SQL so'roviSaqlangan protseduralar qo'ng'iroq funktsiyasidan foydalanib, deb atash kerak:

Qo'ng'iroq qilish tartibi (...)

Tartibni bajaring (...)

Saqlangan protseduralar bir nechta natijalarni, ya'ni tanlash natijalarini qaytarishi mumkin. Bunday natijalarni kursorlar, boshqa saqlanadigan protseduralar yordamida yoki natijalar orqali qaytarish mumkin. Saqlangan protseduralarda shuningdek, jadvalda bir nechta satrlarga bir nechta satrlarni tashkil qilish imkonini beradigan e'lon qilingan ma'lumotlar va kursorlar bo'lishi mumkin. SQL Standart, agar boshqa va boshqa ko'plab boshqalarni va boshqalarning ishini va boshqa ishlarini olib boradi. Saqlangan protseduralar o'zgaruvchini olish, natijalarni qaytarish yoki o'zgaruvchilarni o'zgartirish va ularni qaytarish va o'zgaruvchining qayerda ekanligiga qarab qaytarishi mumkin.

Saqlangan muolajalarning amalga oshirilishi bir dBS-boshqasiga farq qiladi. Ko'pgina umumiy ma'lumotlar bazasi provayderlari ularni bir shaklda yoki boshqa shaklda qo'llab-quvvatlaydi. ZBBMS-ga qarab, saqlangan protseduralar SQL, Java, C yoki C ++ kabi turli dasturlash tillarida amalga oshirilishi mumkin. SQL-ga kirmagan saqlangan protseduralar SQL so'rovlarini mustaqil ravishda bajarishi mumkin va bajarilmasligi mumkin.

Har tomonga

    Mantiqni boshqa dasturlar bilan ajratish. Saqlangan protseduralar funktsional imkoniyatlarni qamrab oladi; Bu ma'lumotlarga ulanishni va ularni turli xil dasturlar o'rtasida boshqarishni ta'minlaydi.

    Ma'lumotlar bazasi jadvallaridan foydalanuvchi izolyatsiyasi. Bu sizga saqlangan protseduralardan, balki ma'lumotning o'zi bilan emas.

    Xavfsizlik mexanizmini ta'minlaydi. Oldingi paragrafga muvofiq, agar siz faqat saqlangan protseduralar orqali ma'lumotlarga kira olsangiz, boshqa hech kim SQL Delete buyrug'i orqali ma'lumotingizni o'chira olmaydi.

    Tarmoq trafigi pasayishi natijasida bajarilishi bajarilishi. Saqlangan protseduralar bilan ko'plab so'rovlar birlashtirish mumkin.

Vs

    Ishning asosiy qismi server qismida va mijozning kichikroqligi tufayli ma'lumotlar bazasi serveriga yukni kuchaytirish.

    O'ylash uchun juda ko'p narsalar bo'ladi. Saqlangan protseduralaringizni yozish uchun MySQL iboralari sintaksisini o'rganishingiz kerak.

    Siz ikki joyda arizangiz mantig'ini takrorlaysiz: Server kodi va saqlangan protseduralar uchun kodlar, shu bilan ma'lumotlar manipulyatsiyasini kuchaytiradi.

    Bir DBMS orqali migratsiya (DB2, SQL serveri va boshqalar) muammolarga olib kelishi mumkin.

Saqlangan tartib-qoidalarning tayinlanishi va afzalliklari

Saqlangan protseduralar samaradorlikni oshirish, dasturiy imkoniyatlarni kengaytirish va ma'lumotlarni xavfsizligini ta'minlash xususiyatlarini qo'llab-quvvatlash imkoniyatini beradi.

Ko'pincha foydalanish shartlarini saqlash o'rniga mijozlar tegishli saqlanadigan protseduraga murojaat qilishlari mumkin. Saqlangan protsedurani chaqirganda, uning tarkibi darhol server tomonidan qayta ishlanadi.

Haqiqiy so'rovga qo'shimcha ravishda, saqlangan protseduralar hisob-kitoblar va ma'lumotlarni boshqarish - DDL operatorlarini o'zgartirish, o'chirish, bajaring, bajaring, boshqa saqlangan protseduralar deb nomlang, kompleks operatsiyalar mantig'ini oling. Bitta bitta operator sizga yuzlab buyruqlar tarmog'ini yuborishni oldini oladi, bu esa yuzlab buyruqlar tarmog'ini va xususan, katta ma'lumotlarning serverga uzatilishi zarurligini ta'minlaydi.

Aksariyat dBMS, siz birinchi marta saqlangan protsedurani boshlaganingizda, u tuziladi (Sintaksis tahlili amalga oshiriladi va ma'lumotlar rejasi yaratildi). Kelajakda uni qayta ishlash tezroq amalga oshiriladi. Oracle DBMS-da, lug'atda saqlanadigan Saqlanadigan protsessual kodeksni sharhlash amalga oshiriladi. SI-da saqlangan protentlik kodeksining (va keyin belgilangan mashinaning mashina kodiga (ma'lum bir kompilyatsiyani) tanlangan protsedura kodiga kiritilgan Oracle 10G versiyasidan boshlab.

Dasturlash xususiyatlari

Yaratilgan saqlangan protsedura har qanday modulni ta'minlaydigan va kodni qayta ishlatishni rag'batlantiradi. Ikkinchisi ma'lumotlar bazasini qo'llab-quvvatlashga yordam beradi, chunki u biznes qoidalarini o'zgartirishdan ajratib olinadi. Saqlangan protsedurani yangi qoidalarga muvofiq o'zgartirish har qanday vaqtda bo'lishi mumkin. Shundan so'ng, undan foydalanadigan barcha ilovalar avtomatik ravishda yangi biznes qoidalariga to'g'ridan-to'g'ri o'zgartirmasdan amalga oshiriladi.

Xavfsizlik

Saqlangan protseduralardan foydalanish foydalanuvchini ma'lumotlar bazasi jadvallariga yo'naltirish yoki foydalanuvchilarni bilvosita va qat'iy tartibga solinadigan saqlanadigan protseduralarni bajarishga ruxsat berish uchun foydalanuvchilarning ma'lumotlar bazasi jadvalini cheklash yoki istisno qilish imkonini beradi. Bundan tashqari, ba'zi DBBMS matnni shifrlash (o'rash) sozlangan protsedurasini qo'llab-quvvatlaydi.

Ushbu xavfsizlik xususiyatlari sizga bazaning yaxlitligi va ishonchliligini ta'minlaydigan foydalanuvchidan ma'lumotlar bazasi tuzilishini izohlashga imkon beradi.

Bunday harakatlar ehtimoli "SQL-kodni amalga oshirish" deb qisqartirildi, chunki saqlangan saqlangan protseduralar qo'shimcha ravishda ma'lumotlar bazasini yuborishdan oldin kirish parametrlarini qo'shimcha ravishda tekshiring.

Saqlangan protseduralarni amalga oshirish

Saqlangan protseduralar odatda SQL tilidan yoki tanlangan DBMMda aniq bajarilishi mumkin. Masalan, bu maqsadlar uchun DBMM Microsoft SQL. Server - Transcort-SQL tili, Oracle - PL / SQL, Postgresql - Postgresql, PL / PL / PLL, PL / PLL, SQL / PL ( Eng.), Axborot-idrokda. MySQL SQL: 2003 yil, uning tili SQL / PL ga o'xshash bo'lishi kerak.

Ba'zi DBMS-da, mustaqil ijrochi fayllarni yaratishga qodir bo'lgan barcha dasturlash tilida, masalan, C ++ yoki Delphi-da yaratishga qodir bo'lgan saqlanadigan protseduralardan foydalanish mumkin. Microsoft SQL server terminologiyasida bunday protseduralar rivojlangan saqlangan protseduralar deb ataladi va Win32-dll-dagi oddiy xususiyatlarga ega. Masalan, dll / shunday bo'lgan funktsiyalar uchun va boshqa nomdan kelib chiqadigan xususiyatlar uchun va boshqa ismlar aniqlanadi - Udf (foydalanuvchi aniqlangan funktsiya). 2005 yil SQL MSda har qanday tilda saqlanadigan protseduralar yozilishi mumkin edi va kelajakda saqlanadigan keng saqlangan protseduralar kelajakda rad etish rejalashtirilgan. O'z navbatida, Oracle DBMS-ni saqlagan tartibda yozishga imkon beradi java tili. IBM DB2da an'anaviy dasturlash tillarida saqlangan protseduralar va funktsiyalarni yozish an'anaviy usul bo'lib, u ANSI Standartga kiritilgandan so'ng, ushbu DBMlarga faqat etarlicha kechikishlar kiritilgan. . Shuningdek, Java va qo'llab-quvvatlaydigan protseduralar informatsiyasi.

Oracle DBMS-da saqlangan protseduralar paketlarga (Inglizcha. Paketlar). To'plam ikki qismdan iborat - spetsifikatsiyani (inglizcha. Paketni aniqlash), bu saqlanadigan protsedura va tanani (ingliz paketli tanasi), u erda amalga oshiradigan joyda. Shunday qilib, Oracle dasturini amalga oshirishdan Dastur kodeksini ajratishga imkon beradi.

Saqlangan protseduralar IBM dBMS-da, modullarga birlashtirish mumkin.

Sintaksis

"P2" protsedurasini yarating ()

SQL Xavfsizlikning aniqroq.

Sharh "Jarayon"

"Salom Dunyo!";

Kodning birinchi qismi saqlangan protsedura yaratadi. Keyingi - ixtiyoriy parametrlar mavjud. Keyin protsedura o'z-o'zidan nom bor va nihoyat.

Saqlangan protseduraning 4 ta xususiyatlari:

Til: Portlashishni amalga oshirish uchun standart SQL ko'rsatilgan.

Determinizm: Agar protsedura har doim bir xil natijaga qaytarilsa va bir xil kiruvchi parametrlarni oladi. Bu ko'paytirish va ro'yxatdan o'tkazish uchun. Standart qiymati hal qilinmaydi.

SQL Xavfsizlik: Qo'ng'iroq paytida foydalanuvchi huquqlari tekshiriladi. Merokoker - bu saqlanadigan protsedura keltiradigan foydalanuvchi. Shaxsiy "Yaratuvchi" protsedurasi. Odatiy qiymat - aniqroq.

Izoh: Documentsing uchun standart qiymat ""

Qo'ng'iroqda saqlangan protsedura

Saqlangan_pocede_name (parametr1, parametr2, ....)

Qo'ng'iroq protsedurasi1 (10, "String" parametrlari ", @ parametret_vart;

Saqlangan tartibni o'zgartirish

MySQL protsedurani o'zgartirish uchun protsedura ifodasini o'zgartiradi, ammo bu faqat ba'zi xususiyatlarni o'zgartirish uchun mos keladi. Agar siz parametrlarni yoki protseduraning tanasini o'zgartirishingiz kerak bo'lsa, uni yana olib tashlashingiz va yaratishingiz kerak.

Olib tashlashsaqlangantartibsizlik

P2 bo'lsa, protsedurani tashlang;

Bu oddiy jamoa. Agar mavjud bo'lsa, agar bunday protsedura mavjud bo'lmasa, agar mavjud bo'lsa, agar mavjud bo'lsa.

Parametrlar

Jarayonni yarating Prot1 (): Parametrlarning bo'sh ro'yxati

Jarayon protini tuzish (varzame ma'lumotlar turi): bitta kiruvchi parametr. Kalom ixtiyoriy, chunki standart parametrlar (kirish).

Jarayon prokulyatsiyasini tuzing (qo'shimcha ma'lumotlar turi): Bittalangan parametr.

Jarayon protesi (intiqout varame ma'lumotlar turi): bir vaqtning o'z parametrini bir vaqtning o'z parametrini kiritish va qaytarildi.

O'zgaruvchining deklaratsiyasining sintaksisi quyidagicha ko'rinadi:

Varxe-ni ma'lumotlar tipidagi standart defontvale-ni e'lon qiling;

Jarayon to'g'risida e'lon

Jarayonni yaratish. [({Ichk | tashqarida} [,…])]
[Dinamik natijasi. ]
Boshlanishi. [Atomga oid]

Oxiri.

Kalit so'zlar
. (Kirish) - kirish parametrlari
. Chiqish (chiqish) - Chiqish parametrlari
. Kirish va mahsulot, shuningdek maydon (parametrlarsiz)
. Dinamik natijalar to'plamida protsedura protsedura qaytganidan keyin ochilgan kursorlarni ochishi mumkinligini ko'rsatadi.

Qaydlar
Tarmoq protseduralarida saqlangan protseduralarda ko'plab parametrlardan (birinchi navbatda katta raqamlar va ramziy chiziqlar) tarmoq va yuk ko'tarilishi tavsiya etilmaydi. Amalda, mavjud trantact-kvl, PL / SQL va Informatix Dialireks, parametrlar va parametrlardan foydalanishda, o'zgaruvchilarning deklaratsiyasi va subrouting qo'ng'irog'ini deklaratsiyalashda sezilarli farq bor. Microsoft quyidagi taxminlarni hisoblash uchun quyidagi taxminlarni hisoblab chiqishni tavsiya qiladi:
\u003d (bir vaqtning o'zida bir vaqtning o'zida ishlaydigan foydalanuvchilar soni) * (o'lchami katta reja Bajarilishi) * 1.25. Sahifalarda ijro rejasining hajmini aniqlash Bu buyruqdan foydalanish kerak: DBCC ENGRAGE.

Qo'ng'iroq qilish tartibi

Mavjud DBMM-larda saqlangan protseduralar qo'ng'irog'i operatordan foydalangan holda amalga oshiriladi:

Protsedurani bajarish. [(][)]

Eslatma: Saqlangan protseduralarni ariza, boshqa saqlanadigan protsedura yoki interfaol rejimdan chaqirish mumkin.

Jarayonni e'lon qilish misoli

Protsedurani yarating 3./ protsedurani e'lon qiling
SHART, SPEALONLARNING SHAXSIY SHAXSIY SHAXSIY KUNING
Ochiq egilish1 // kursorni oching
Kurt1 // kursordan ma'lumotlarni o'qing
@@ fitch_status \u003d 0
Boshlanishi.
Egri chiziqdan keyingi
Oxiri.
Yopish1 // Kursorni yoping
Dilat 1
Prot1 // protsedurani bajaring

Polimorfizm
Xuddi shu diagrammada ikkita pastki qismni bir xil diagrammada yaratilishi mumkin, agar ularni ajratish mumkin bo'lsa, bir-biridan bo'lgan parametrlar bir-biridan bir-biridan bo'lishi kerak. Ikkita subroutinlarni bir xil diagrammadagi bir xil nom bilan ajratish uchun ularning har biri muqobil va o'ziga xos nomi (ma'lum bir nomi) beriladi. Subroutin aniqlanganda bunday nom ochiq ko'rsatilishi mumkin. Subroutinlarni chaqirganda, agar bir xil bir xil nom bo'lsa, kerakli quylovning ta'rifi bir necha bosqichda amalga oshiriladi:
. Dastlabki protseduralarni aniq belgilang belgilangan ismVa agar bunday, keyin belgilangan nom bilan barcha funktsiyalar mavjud bo'lsa.
. Keyingi tahlil qilish uchun, faqat subroutinlar tegishli ravishda qoladilar ushbu foydalanuvchi Bu ijro etish uchun sharafga ega (ijro).
. Ular uchun parametrlar soni qo'ng'iroq argumentlar soniga to'g'ri keladi. Parametrlardagi ko'rsatilgan ma'lumotlar turlari va ularning holati tekshiriladi.
. Agar bittadan ortiq subroutin qolsa, malaka nomi tanlanadi.
Amaliyotda, Oracle posorshizi faqat paketda e'lon qilingan funktsiyalar uchun qo'llab-quvvatlanadi, [Elektron pochta bilan himoyalangan] - Turli sxemada va Sybase va SQL-serverda yuk tashish taqiqlangan.

Protseduralarni olib tashlash va o'zgartirish
Jarayonni o'chirish uchun operator quyidagilardan foydalaniladi:

Jarayonni o'zgartirish uchun operator quyidagilardan foydalaniladi:

O'zgartirish tartibi. [([{Ichk | tashqarida}])]
Boshlanishi. [Atomga oid]

Oxiri.

Protseduralarni bajarish uchun imtiyozlar

Grantni bajarish. Ga |Ommaviy [Grant tanlovi bilan]

Tizim protseduralari
Ko'pgina DBTMS (SQL Server) ning o'z maqsadlari uchun ishlatilishi mumkin bo'lgan o'rnatilgan tizimning ma'lum bir to'plamiga ega.

Oldingi maqolada ushbu tsiklning Biz ma'lumotlarni jadvallardan tushirish, ularning tarkibini o'zgartirish, ularning tarkibidagi ma'lumotlar bazalari va ob'ektlarni yaratish, o'zgartirish va o'chirish haqida ma'lumotga qaradik. Ushbu maqolada biz server DBMS-ning tavsifi haqida batafsil ma'lumotni batafsil ko'rib chiqamiz: g'oyalarni, tetiklashtiruvchilar va saqlanadigan protseduralar.

Ushbu tsiklning 3-nashridagi birinchi maqolada, biz eng zamonaviy server DBMS dasturlarini qo'llab-quvvatlash, tetiklashtiruvchilar va saqlanadigan protseduralar. Shuningdek, ko'plab ish stolida ish stoli, masalan, kirish, dbas, qamish kabi ish stolida ishlaydi.

Shuni ta'kidlash kerakki, tetik va saqlanadigan protseduralar odatda dasturlash tillarida yozilgan bo'lib, ular SQL tilining protsessual kengayib borayotgan. Ushbu kengaytmalar tarkibida operatorlarni o'z ichiga oladi, masalan ... agar ... agar ... agar eslasangiz, SQL - bu ishni shakllantirishingiz mumkin. , ammo uning qatl etilishi algoritmlarini tasvirlab bo'lmaydi). SQL tilidan farqli o'laroq, standartga bo'ysunish standartlashtirilmagan va turli xil DBTMS turli xil DBMMS-ning turli xil bosqichlari sintaktikotlaridan foydalaniladi, ammo turli DBMMS-ning turli xil bosqichlarini muhokama qilish ushbu maqola doirasidan tashqarida .

Ko'rishlar, tetiklashtiruvchilar va saqlanadigan protseduralarni qanday ishlatishingiz mumkinligini tushuntirish uchun biz Microsoft SQL server 7.0 va Shimoliy-ning ma'lumotlar bazasini tanladik.

Misollarni bajarishdan oldin, siz ishlatadigan DBMS-ni saqlash va saqlanadigan protseduralarning amalga oshirilishi va usuli ushbu moddada ko'rsatilganlardan farq qilishi mumkinligiga e'tibor bering. Bundan tashqari, server ob'ektlarini yaratish ma'lumotlar bazasi ma'muri tomonidan taqdim etilgan tegishli ruxsatlarga ega bo'lishi kerak.

Shuningdek, ba'zi ODBC drayverlari mijozlarga buyurtmalarni o'z-o'zidan qo'llab-quvvatlasalar ham, mijozlarga buyurtmanomalar orqali saqlanadigan protseduralar qo'ng'iroqlarini qo'llab-quvvatlamaydi. Biroq, bu holda saqlangan protseduralar hali ham tajovuzkorlardan kelib chiqishi mumkin.

Keling, g'oyalardan boshlaylik, keyin saqlangan protseduralarni muhokama qiling va trigger-ni bosing.

Vakillik

Taqdimot bu virtual jadval, odatda, bir yoki bir nechta stolning ustunlari to'plamini o'z ichiga oladi. Aslida, nuqtai nazarda ma'lumotlar mavjud emas, lekin faqat SQL so'rov turi shuni ko'rsatadiki, qaysi ma'lumotni ushbu ma'lumotga kirish paytida va qaysi jadvallarni olish kerakligini tanlang. Shu nuqtai nazardan, taqdimot saqlash so'rovidir.

Aksariyat hollarda, topshirish ma'lumotlar xavfsizligini ta'minlash uchun ishlatiladi. Masalan, ba'zi foydalanuvchilarning ba'zi toifalari taqdimotdan foydalanishlari mumkin, ammo ma'lumotlar hosil bo'lgan jadvallarga emas; Bundan tashqari, SQL so'rovi foydalanuvchi parametrini o'z ichiga olishi mumkin (foydalanuvchi ro'yxatdan o'tgan ism) va bu holda ma'lumotlarga murojaat qilishda foydalanuvchi foydalanuvchi nomiga bog'liq bo'ladi.

Quyida vakolatxonalarning asosiy xususiyatlari keltirilgan:

  • taqdimotlar jadvallar kabi harakat qiladi;
  • ko'rishlar mavjud emas;
  • taqdimotlar bir nechta jadvaldan ma'lumotlardan foydalanishlari mumkin.

Ko'rish uchun biz SQL-ning ko'rinishini o'zgartirish uchun biz o'zgarishi uchun - o'zgartirish taklifi va uni olib tashlash uchun - bu so'zni ko'rish taklifini ishlatishimiz mumkin.

Joriy ma'lumotlar bazasini ko'rish uchun biz ko'rib chiqamiz.

Ko'rish taklifini yaratish

SQL raqamini yaratish uchun sintaksis taklifi SQL-ni bir nechta qo'shimcha kalit so'zlar bilan tanlang. Quyida uning soddalashtirilgan sintaksisi:

Tanlash_statsiyasi sifatida ko'rish versiyasini yaratish

Ko'rish_name argumenti taqdimotning nomini ko'rsatadi. Microsoft SQL serverida ishlatiladigan kalit so'z, topilma jadvalidagi manbani yaratish uchun matnni yashirish imkoniyatini beradi.

Ko'rish paytida kalit so'z ko'rsatadigan narsa shuni ko'rsatadiki, ko'rinishda qatnashadi. Esda tutingki, ushbu so'rovda bu so'rovni kalit so'zlar, hisobga olish yoki hisoblash orqali va vaqtinchalik stolga murojaat qila olmasligi kerak.

Ilgari yaratilgan ko'rinishni o'zgartirish uchun siz keyingi bo'limda qisqacha tavsiflangan o'zgartirish taklifidan foydalanishingiz kerak.

Tomchi ko'rinishini taklif qiling.

Ushbu taklif ma'lumotlar bazasidan ko'rinishlarni o'chirish uchun ishlatiladi. Ma'lumotlar bazasidan stolni o'chirganingizda, u bilan bog'liq bo'lgan barcha qarashlar olib tashlanadi. Ushbu taklif yordamida biz masofadan turib ko'rish nomini ko'rsatishimiz kerak. Ko'rilgani o'chirilgandan so'ng, u haqida barcha ma'lumotlar tizim jadvallaridan olib tashlanadi.

Ko'rish kerak bo'lganda boshqa ishni olib tashlash kerak bo'lsa, unda asoslangan jadvallar tarkibi ko'rinishini yaratgandan keyin o'zgargan bo'lsa, paydo bo'lishi mumkin. Bunday holda, siz ko'rinishni o'chirib tashlashingiz va keyinchalik ko'rish taklifidan foydalanib yana yaratishingiz mumkin.

G'oyalarni yaratish va ulardan foydalanish

Ko'rish taklifini yaratish Ba'zi talablarga javob beradigan ma'lumotlarni ajratishga imkon beradigan vakolatxonalarni yaratish uchun ishlatiladi. Taqdimot joriy ma'lumotlar bazasida yaratilgan va alohida ob'ekt sifatida saqlanadi.

Ko'rishni yaratishning eng yaxshi usuli - bu tanlash va uni tekshirish, yaratishning etishmayotgan qismini qo'shishdir. Keling, Shimoliy Vistiks ma'lumotlar bazasida mahsulotni taqdim etish uchun dastlabki kodni ko'rib chiqaylik (1 ro'yxat).

SQL taklifi ma'lumotlarni tanlashidan boshlab, odatdagidek ma'lumotlarni ijro etadigan odatdagi tanlash so'rovini yaratish uchun bir narsa. Ushbu ko'rinishda ko'rsatilgan tanlangan taklif ikki stolning maydonlarini tanlaydi - toifadagi stol va mahsulotname, provayterunt, mahsulot stolidan to'xtatilgan. Shundan so'ng, ikki stol ma'lumotlari toifdid sohasi orqali va faqat omborda mavjud bo'lgan mahsulotlar mavjud bo'lgan mahsulotlar to'plamiga kiradi. Ushbu vakillikka murojaat qilishning natijasi anjirda ko'rsatilgan. biri.

Endi Sharqiy mintaqaning barcha hududlarini namoyish etamiz. Ushbu ko'rinish quyidagi so'rovga asoslanadi (listing 2).

Tanlash taklifi bizga kerak bo'lgan natijalarni qaytarishini ta'minlaydi, biz ko'rib chiqish to'g'risidagi bayonotni qo'shamiz va taqdimot orqali eritterr nomini tayinlaymiz.

Qo'l-yo'riq matni yaratish o'rniga, siz odatda DBMMS ichiga kiritiladigan vizual vositalardan foydalanishingiz mumkin. Shaklda. 2 Microsoft SQL serveriga kiritilgan korxona rahbariyatining ajralmas qismi bo'lgan view dizayner vositasi yordamida bir xil ko'rinishi qanday yaratilishi mumkinligini ko'rsatadi.

Ko'rish dizaynerining yuqori qismida jadvallar qanday bog'liqligini aniqlashga va nuqtai nazarda qanday maydonlar namoyish etilishini aniqlashga imkon beradi. Quyida siz jadvallar va dalalarning taxalluslari, ularning qadriyatlari bo'yicha cheklovlar, displey usuli. Taqdimotning manbai va uning bajarilishi natijalari quyidagilardir.

Tugashimizdan oldin qisqa sharh vakolatxonalar, keling, qanday olish kerakligi haqida ozgina gaplashamiz qo'shimcha ma'lumot ular haqida. Microsoft SQL server 7.0-da biz quyidagi tizim saqlanadigan protseduralardan foydalanishimiz mumkin:

  • ko'rish haqida ma'lumot olish uchun siz SP_HELDE TIZIMINING Saqlangan protsedurasidan foydalanishingiz mumkin. Masalan, Sp_elpelp Helpterr yangi tashkil etilgan topshiruv to'g'risidagi ma'lumotlarni qaytaradi;
  • ko'rishning manbasini olish uchun siz SP_PTEPTHETTExt-ni ishlatishingiz mumkin;
  • ko'rish bog'liq bo'lgan jadvallar ro'yxatini topish uchun SP_D-ga tegishli tizimda saqlanadigan tizimdan foydalanishingiz mumkin;
  • siz sp_ename tizimi tizimidan ko'rinishni o'zgartirish orqali foydalanishingiz mumkin.

Ushbu bo'limda biz bir yoki boshqa mezonlarni qondiradigan ma'lumotlarni olish uchun biz taqdimotlardan foydalanishni ko'rib chiqdik. Biroq, oxirgi misolga qaytish. Shimoliy-chuyda ma'lumotlar bazasida to'rtta hudud mavjud va barcha mintaqalar hududlari ro'yxatida bizda to'rt xil qarash kerak. Agar mintaqaning qiymatini parametr sifatida o'tkazsak, bu vazifani soddalashtirish mumkin. Buni keyingi bo'limda aytib o'tamiz, bu batafsil saqlanadigan protsedura yordamida amalga oshirilishi mumkin.

Saqlangan protseduralar

Saqlangan protsedura - bu ma'lumotlar bazasida nomlangan ob'ekt sifatida saqlangan va yagona kod parchasi sifatida bajarilgan komplektsion stral taklif. Saqlangan protseduralar parametrlarni qabul qilishi va qaytarishi mumkin. Foydalanuvchi saqlangan protsedurani yaratganda, server uni tuzadi va uni umumiy keshga joylashtiradi, shundan so'ng kompilyatsiya kodi bir nechta foydalanuvchilar tomonidan qo'llanilishi mumkin. Agar dastur saqlangan protsedurani ishlatsa, u uni talab qilingan bo'lsa, parametrlarni uzatadi va bu protsedurani kompomillamasdan amalga oshiradi.

Saqlangan protseduralar sizga dastur faoliyatini yaxshilashga imkon beradi. Birinchidan, mijozlarga ariza topshirish uchun yuborilgan an'anaviy SQL so'rovlariga nisbatan ular bajarishga tayyorgarlik ko'rish uchun kamroq vaqt talab qiladi, chunki ular allaqachon tuzilgan va saqlangan. Ikkinchidan, tarmoq trafigi bu holatda ham SQL so'rovi yuborilgan bo'lsa, shundan beri, kamera tarmoq orqali kamroq ma'lumotlar uzatiladi. Anjir. 3 mijozning qo'llanilishi bilan saqlanadigan protseduraga qo'ng'iroqni aks ettiradi.

Saqlangan protseduralar agar ular ta'sir qiladigan ob'ektlar bo'lsa, har qanday o'zgarishlar kiritilgan bo'lsa, avtomatik ravishda qayta to'ldiriladi; Boshqacha aytganda, ular har doim tegishli. Yuqorida aytib o'tilganidek, saqlangan protseduralar parametrlarni qabul qilishi mumkin, bu esa imkon beradi bir nechta dasturlar Turli xil kiritish to'plamlaridan foydalangan holda bir xil tartibda foydalaning.

Saqlangan protseduralar ma'lumotlarning moslashuv yaxlitligini va biznes qoidalarini amalga oshirishni qo'llab-quvvatlash uchun ishlatiladi. Ikkinchi holatda qo'shimcha moslashuvchanlik buning uchun erishiladi, chunki agar biznes qoidalari o'zgarsa, siz mijoz dasturlarini o'zgartirmasdan protseduraning matnini o'zgartirishingiz mumkin.

Tajribalar yaratish, o'zgartirish va olib tashlash uchun maxsus SKL-takliflar mavjud - tartibni yaratish, protsedura va protsedurani o'zgartirish, protsedura va protsedurani yaratish, protsedura va tushirish tartibini yaratish, o'zgartirish va protsedura yaratish. Biz ularni keyingi qismda ko'rib chiqamiz.

Jarayon taklifini yarating

Jarayon taklifini yaratish Saqlangan protsedura yaratish uchun ishlatiladi. U quyidagi soddalashtirilgan sintaksisga ega:

Proc_name [(@parametri ma'lumot_type) [\u003d Odatiy]] [...] SQL_STATISKA BERADI

Proc_name argumenti ushbu ma'lumotlar bazasida noyob bo'lishi kerak bo'lgan saqlangan protsedura nomini belgilaydi. @Parametr argumenti protsedur parametrini aniqlaydi. Nazorat shartnomasida siz bir yoki bir nechta parametrlarni aniqlashingiz mumkin. Agar parametr uchun standart qiymat bo'lmasa, uni protsedurani chaqirishda foydalanuvchi (yoki mijozga murojaat qilish) tomonidan o'tkazilishi kerak. Microsoft SQL server 7.0, saqlanadigan protsedura parametrlari soni 1024 dan oshmasligi kerak; Odatiy bo'lib, ular nol qadriyatlari bo'lishi mumkin.

Ammo shuni ta'kidlash kerakki, ba'zi bir umumbashariy ma'lumotlarga kirish mexanizmlari saqlangan protseduralar parametrlari soniga qo'shimcha cheklovlar qo'yishi mumkin. Masalan, Oracle 8 uchun BDE drayveri faqat protseduralar bilan ishlashi mumkin, ularning parametrlari soni 10 dan oshmaydi.

Ma'lumot_type argumenti parametr uchun ma'lumotlar turini ko'rsatadi. Odatiy qiymatlarni o'rnatish uchun standart kalit so'zdan foydalanish mumkin - bu doimiy yoki null bo'lishi mumkin. Agar standart qiymati ko'rsatilgan bo'lsa, protsedura parametr qiymatini ko'rsatmasdan yuborish mumkin. Agar protsedura o'xshash kalit so'z bilan parametrdan foydalansa, uning standart qiymati tarkibida guruh belgilari bo'lishi mumkin (%, _ va [_ va [_ va [_]).

Chiqish kalit so'zi bu qaytarilgan parametr ekanligini ko'rsatadi.

Kalit so'z sifatida ushbu serverga xos bo'lgan protsessual SQLning izohlari va rejalari bo'yicha har qanday miqdordagi SQL takliflari va takliflari shaklida bo'lishi kerakligini ko'rsatadi.

Yaratilgan tartibda yaratilgan protsedura joriy ma'lumotlar bazasida saqlanadi. Microsoft SQL serverida, protseduralar nomlari Sysobs tizimlari jadvali tarkibida va manba matnida mavjud.

Ilgari yaratilgan saqlangan protsedurani o'zgartirish uchun siz keyingi bo'limda qisqacha tavsiflangan o'zgartirish protsedura taklifidan foydalanishingiz kerak.

Tomchi protsedurasini taklif qiling

Ushbu taklif ma'lumotlar bazasidan saqlangan protseduralarni olib tashlash uchun ishlatiladi. Nominatsiya protsedurasi bitta argumentni oladi - masofaviy protsessning nomi.

Saqlangan protsedurani o'chirganingizda, u Sysobnektiv va tizimlar jadvallaridan o'chiriladi.

Saqlangan protseduralar yaratish va ulardan foydalanish

Fikrlar bo'yicha bo'limda biz Shimoliy Viloyatning to'rtta mintaqasidan birini tanlash uchun mintaqada bo'lgan parametrni o'z ichiga olgan parametrni o'z ichiga olgan parametrni topshirish uchun diqqat qildik. Keling, mintaqa hududlari ro'yxatini qaytaradigan so'rovni ko'rib chiqaylik:

Hududiy hududlardan hududiy hududlardagi hududlar bo'yicha hududiy hududlardan tanlang. Hududkorlik mintaqadan atrof-muhitga qo'shilish hududidan atrof-muhitga qo'shiling. Bu erda hududiylar.rice \u003d 1

Boshqa mintaqani tanlash uchun biz so'rovning oxirgi satri qayerda bo'lgan joylarda holatni o'zgartirishimiz kerak. Shuning uchun, agar biz o'zgaruvchidan foydalansak (Regid deb nomlang), biz to'rtta mintaqadan birini so'rovning boshqa qismlarini o'zgartirmasdan tanlashimiz mumkin.

Shimoliy-chiRode ma'lumotlar bazasida 1 dan 4 gacha bo'lgan to'rtta mintaqa 4 dan 4 gacha bo'lgan to'rtta mintaqa butun sonli son bo'lishi kerakligini anglatadi. Saqlangan protsedura kodeksi quyidagicha:

Murtaqaviy shum-shoegionni tanlang @RegIDT IN-ni saralanganlar.terrestitore sifatida, mintaqadagi hududdan atrof-muhitga qo'shilish, hududiylar.rice.rige.riceionid bu erda hududiy

E'tibor bering, biz deyarli barcha tanlangan matn matnini hech qachon qoldirdik (u kursivda joylashgan) va faqat yangi tashkil etilgan qayta tashkil etilgan protsedura (birinchi qatorda), parametr e'lon qilish (ikkinchi qatorda) va kalit so'z Sifatida, aslida harakatlar bajaradigan takliflarning boshlanishini ko'rsatadi.

Yaratilgan tartibning bajarilishi SQL Server so'rovi analizatorida Regid \u003d 2 uchun SQL-ni anchadan iborat qilib ko'rsatilgan. 3.

Shubhasiz, biz nafaqat taqdim etilgan materiallar yoki "aqlli" so'rovlarni tanlashimiz, balki saqlangan protseduralarni qo'llashimiz mumkin. Saqlangan protseduralar ko'plab tartibli vazifalarni avtomatlashtirish mexanizmlarini ta'minlaydi.

Microsoft SQL server 7.0, biz an'anaviy saqlangan protseduralar bilan ishlash uchun tizimli saqlanadigan protseduralardan foydalanishimiz mumkin:

  • sP_STORDED_POCENTURE - saqlangan protseduralar ro'yxati ko'rsatilgan;
  • sP_PREPTTET - Saqlangan protseduraning manbasini ko'rsatadi;
  • sP_DUnzular - saqlanadigan protseduralar haqidagi bog'liqlik to'g'risidagi ma'lumotlarni namoyish etadi;
  • sP_Pressopsiya - Saqlangan protseduralar variantlarini o'rnatadi yoki ularni o'rnatadi;
  • sP_RECOMPYPETILE - keyingi qo'ng'iroq paytida protsedurani bajarish;
  • sp_ename - protseduraning nomini o'zgartiradi.

Tizim saqlangan protseduralar

Biz Microsoft SQL serveri haqida gapirayotganimiz sababli, unda amalga oshiriladigan ko'plab tizimli saqlanadigan protseduralar ta'kidlash kerak. Saqlangan protseduralar nomlari SP_ yoki XP_ bilan boshlanadi va usta ma'lumotlar bazasida saqlanadi. Yuqorida biz allaqachon tez-tez ishlatiladigan tizim saqlanadigan protseduralardan ba'zilarini aytib o'tgan edik.

E'tibor bering, ushbu tetiklar foydalanuvchi ma'lumotlariga qaytmasliklari kerak.

Trigger-ni yaratishda siz ikkita maxsus jadvaldan foydalanishingiz mumkin. Masalan, o'chirilgan va kiritilgan stollar stigger aniqlangan va foydalanuvchi tomonidan o'zgartirilgan yozuvlarning eski va yangi qiymatlarini o'z ichiga olgan jadvalda bir xil tuzilishga ega. Masalan, masofaviy yozuvlarni qidirish uchun quyidagi SQL taklifidan foydalanishimiz mumkin:

O'chirilgan * ni tanlang

Yorliqda. 3 Barcha mumkin bo'lgan ma'lumotlar o'zgarishi uchun o'chirilgan va o'rnatilgan stollarning tarkibini ko'rsatadi.

Mavjud qo'zg'atuvchini o'zgartirish uchun siz o'zgartirish tetik taklifidan foydalanishingiz kerak. Biz bu haqda keyingi bo'limda gaplashamiz.

Birinchidan, biz ushbu ma'lumotlar mavjud bo'lgan jadvalga ikkita yangi maydonni qo'shishimiz kerak. Keling, ularni yangilash va yangilangan menejerning ismini yangiladi va yangilangan (Yozish o'zgartirilgan vaqt). Keyin tekshiruv nomini yarating. Mana uning kodi:

Qo'shimcha mijozlar to'plamini qo'shish uchun mijozlar uchun TRIGGER Complekni yarating. Mijozlar_name \u003d Concuater.customerid \u003d mijozlar.customerid

TRIGGERning manbai matnidan ko'rinib turibdiki, mijozlar jadvalida har bir qo'shing va yangilashdan keyin amalga oshiriladi. Ushbu qo'zg'atuvchi Mijozlar (ma'lumotlar bazasi foydalanuvchisining nomini mijozlar va o'zgartirilgan sana va vaqtni - mijozlarda. Ushbu ma'lumotlar qo'shilgan jadvaldan olinadi.

Ko'rinib turibdiki, bu qo'zg'atuvchi stolda o'zgarishlarni kuzatib borish va yangi yozuvlarni kiritishga imkon beradi.

Triggerlarning qisqacha ma'lumotlarini tugatishdan oldin, siz qayerda, mavjud bo'lgan o'rni haqida ma'lumot topishingiz mumkinligini xabar qilishimiz kerak. Sysobjects jadvali Triggerlar va ularning turlari haqidagi ma'lumotlarni saqlaydi va silliqlar jadvalida ularning manbalari matni mavjud.

Xulosa

Shu mahalda biz ma'lumotlar bazasi ob'ektlarining bir nechta turlariga qaramadik, saqlangan protseduralar, qarashlar va tetiklashtiruvchilar. Biz quyidagilarni bilib oldik:

  • Odatda bir yoki bir nechta stol ustunlarining ustunlari sifatida yaratilgan virtual jadval. Ko'rish uchun, o'zgartirishlar kiritish uchun ko'rib chiqish taklifi - o'zgartirish taklifi va tomchi ko'rinishini o'chirish uchun qo'llaniladi.
  • Saqlangan protsedura - bu ma'lumotlar bazasida nomlangan ob'ekt sifatida saqlangan va yagona kod parchasi sifatida bajarilgan komplektsion stral taklif. Saqlangan protsedurani yaratish uchun protsedura taklifi o'zgartirish uchun - o'zgartirish va o'chirish tartibi - tomchi protsedurasini o'zgartirish uchun qo'llaniladi.
  • TRUZGER - bu maxsus jadvaldagi ma'lumotlar qo'shilganda, o'chirilgan yoki o'zgartirish, o'chirilgan yoki o'zgartirish orqali SQL takliflarini o'chirish yoki yangilash orqali o'zgartiriladi. Triggerlar yaratilgan tetik taklifidan foydalanib yaratilgan. Trigatni o'zgartirish uchun o'zgartirish tetik taklifidan foydalaniladi va tomchi trigger taklifi qo'llaniladi.

12 "2000"

1. O'zingizning protseduralaringizda chiziqni yoqing - quying-ni tanlang: Har bir DML ifodasi bilan SQL Server bizga qayta ishlangan yozuvlar sonini o'z ichiga olgan xabarni qaytarib beradi. Ushbu ma'lumot Kodni tuzatish paytida biz uchun foydali bo'lishi mumkin, ammo u to'liq foydasiz bo'ladi. Belgilangan O'rnatish yoqilgan holda biz ushbu xususiyatni o'chiramiz. Bir nechta ibora yoki \\ va tsikllar bo'lgan saqlanadigan protseduralar uchun ushbu harakat faoliyatning sezilarli o'sishini ta'minlaydi, chunki trafik soni sezilarli darajada kamayadi.

Dbo.prxname yaratish
Kabi
Set-ni yoqing;
- Bu erda protsedura kodi mavjud
DBB.TBBBBBBBLE1-dan ustunli1-ni tanlang
- Tarkibda manbaga aylantirilgan
Sozlashni sozlash;
Boring.

2. Ob'ekt nomi bilan sxema nomidan foydalaning: Xo'sh, menimcha, bu aniq. Ushbu operatsiya serverga ob'ektlarni qidirish va uning quchog'iga tasodifiy tebranish o'rniga, u qayerga borishi va nima olish kerakligini aytib beradi. Ko'p sonli ma'lumotlar bazalari, stol va saqlangan protseduralar bilan, bu bizning vaqtimiz va asablarimizni juda tejash mumkin.

DBB.Mitable-dan * ni tanlang - bu yo'l yaxshi
- o'rniga
* MyTable-ni tanlang - yomon ish qiling
- Umumiy protsedura
DBBE.MYPOC - Yaxshi
- ...
MyProc - Yaqin!

3. "SP_" prefiksidan saqlangan protseduralar nomi bilan foydalanmang: Agar bizning tartibimiz nomi SP_ bilan boshlangan bo'lsa, SQL Server avval uning asosiy ma'lumotlar bazasida qidiradi. Ushbu prefiks shaxsiy ichki serverlarda saqlangan protseduralar uchun ishlatiladi. Shuning uchun, uni ishlatish qo'shimcha xarajatlar va hatto noto'g'ri natijaga olib kelishi mumkin, agar u o'z bazasida topilganingiz kabi bir xil nomga ega bo'lsa.

4. Agar mavjud bo'lsa (1 ni tanlang) (1 ni tanlang *): Boshqa jadvalda yozuvning mavjudligini tekshirish uchun, agar mavjudligi ifodasidan foydalanamiz. Bu ibora Agar ichki ifoda kamida bitta jumlaga qaytarilsa, u haqiqatni qaytaradi, bu "1", barcha ma'ruzachilar yoki jadvalning ahamiyati yo'q. Ma'lumotlar, printsipial jihatdan foydalanilmaydi. Shunday qilib, ma'lumotlarni uzatish paytida trafikni siqish uchun quyida ko'rsatilganidek, "1" dan foydalanish mantiqiydir:

Agar mavjud bo'lsa (Sysobjjects-dan 1-ni tanlang)
Bu erda ismi \u003d "miyam" va tipingiz \u003d "U")

5. Xatolarni qo'lga olish uchun sinab ko'ring: 2005 yilgacha Serverlar, har bir so'rovdan so'ng, tartibda juda ko'p xatolik tekshiruvlari yozilgan. Ko'proq kod doimo resurslar va ko'proq vaqt sarflaydi. 2005 yildan boshlab SQL serveri, "Ohm yanada to'g'ri paydo bo'ldi va qulay usul Ushbu muammoning echimlari:

Harakat qilishni boshlang.
- kod
Tugatish.
Tutib turishni boshlang.
- kod xotirjam xatolari
Tugatish.

Xulosa
Aslida, bugungi kunda menda hamma narsa bor. Men yana bir bor takrorlayman, bu erda faqat sizning amaliyotingizda ishlatgan texnikalar mavjud va men ularning samaradorligini kafolatlashim mumkin.

P.S.
Mening birinchi xabarim, qat'iy hisoblamang.