Internet Derazalar Android
Kengaytirmoq

SQL server saqlangan protseduralar. Saqlangan protsedura

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

1. Barcha misollarni tarqatish, ulardan foydalanish natijalarini tahlil qilish SQL Server Boshqaruv studiyasi. 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 protsedura o'tkazish

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 chiqaring. 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 olingan sana bilan 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.

22 Javoblar

Hurmatlarim bo'yicha men asosan WinForms mijoz / server dasturlari men keldim, bu men boshlagan oddiy xulosalar:

Saqlangan protseduralardan foydalaning:

  • Ma'lumotlar bilan har qanday qiyin ish uchun. Agar biron bir ish qilmoqchi bo'lsangiz, haqiqatan ham kursor yoki tempni talab qilsangiz, bu odatda eng ko'p narsa tezkor yo'l Buni SQL serverida bajaring.
  • Agar siz ma'lumotlarga kirishni blokirovka qilishingiz kerak bo'lsa. Agar siz foydalanuvchilar uchun stolga kira olmasangiz (yoki boshqa biror narsa yoki boshqa narsa), bunga amin bo'lishingiz mumkin yagona yo'li Siz yaratgan qo'shma korxona orqali ma'lumotlar bilan o'zaro munosabatlar.

Maxsus so'rovlardan foydalaning:

  • Ma'lumotlarga kirish huquqini cheklashingiz kerak bo'lmaganda (yoki boshqacha).
  • Oddiy qidiruv uchun. Turli xil qidiruv mezonlari uchun SP-ni yaratish - bu og'riq va texnik xizmat. Agar siz juda tez yaratishingiz mumkin bo'lsa qidiruv so'roviBuni ishlat.

Ko'pgina arizamda, men SP va Ad-Hoc SQL-dan foydalanaman, garchi ular kamroq va kamroq foydalanaman, chunki ular C # kabi kodga ega ekanligim uchun, ularni boshqarish, sinovdan o'tkazish va saqlash juda qiyin. Agar aniq sabab topa olmasangiz, ad-hoc sql-dan foydalanishni tavsiya qilaman.

Saqlangan protseduralar shartnomasi dasturiy ta'minotma'lumotlar bazasiga qarshi harakatlarni qoplaydi. Tasdiqlash va hatto ma'lumotlar bazasi diagrammaning o'zi tuzilmagan, batafsil kodga ta'sir qilmasdan o'zgartirilishi mumkin, shuning uchun protsedura va protsedura natijalari o'zgarishsiz qoladi.

Arizangizda o'zingiz ma'lumot modelingiz bilan chambarchas bog'lagan holda o'zingizni diqqat bilan bog'lab qo'yasiz.

Xuddi shu sababga ko'ra, siz o'z ma'lumotlar bazangizda har bir jadval uchun taniqli protseduralar yaratilishi mumkin bo'lgan yaxshi amaliyot ham mavjud emas, chunki u hali ham yaqindan ulangan. Buning o'rniga protseduralar juda qo'pol, qo'pol donador bo'lishi kerak.

Menimcha, bu ma'lumotlar bazasini qo'llab-quvvatlaydigan va foydalanuvchi interfeyslarini ishlab chiqadigan odamlar o'rtasidagi asosiy mojaro.

Ma'lumotga ega bo'lgan shaxs sifatida men ma'lumotlar bazasi bilan Agoc so'rovlari orqali ko'rib chiqilgan ma'lumotlar bazasi bilan ishlay olmadim, chunki ularni sozlash yoki boshqarish qiyin. Sxemadagi o'zgarishlarga nima ta'sir qilishi haqida qanday qilib bilib olishim mumkin? Bundan tashqari, men foydalanuvchilar ma'lumotlar bazasi jadvallariga xavfsizlik nuqtai nazaridan to'g'ridan-to'g'ri kirishni ta'minlamayman (men faqat SQL in'ektsiyasining hujumlari, balki to'g'ridan-to'g'ri huquqlarga yo'l qo'ymaydigan asosiy ichki nazorat, balki barcha foydalanuvchilarga ruxsat bermaydigan asosiy ichki nazoratni anglatadi. FAQAT FOYDALANIShNING XAVFSIZLIGINI QO'LLAB-QUVVATLAShNING XAVFSIZLIGINI QO'LLAB-QUVVATLAShNI KO'RSATISh UChUN HARAKATLAR FOYDALANISh UChUN FOYDALANING MUSTAHKAMLANDI.

Ma'lumotlar bazalari ob'ektga yo'naltirilgan emas va ob'ektga yo'naltirilgan nuqtai nazardan yaxshi ko'rinadigan kod ma'lumotlar bazasi nuqtai nazaridan juda yomon bo'lishi mumkin.

Bizning ishlanmalarimiz bizga ma'lumotlar bazalariga kirishimizdan mamnun ekanliklarini xabar qilmoqdalar, chunki u xatolarga bog'liq xatolarni sezilarli darajada tezlashtiradi va keyinchalik ish muhitida provayderni ishga tushiradi va yangi filialni yaratmaydi Kod va qayta ishlash va ishlab chiqarish uchun qayta yoqish. Biz barcha jarayonlarimizning barcha jarayonlaridagi faoliyatda bo'lishini talab qilamiz, shuning uchun manba nazorati umuman muammo emas. Agar u bo'linmayotgan bo'lsa, u vaqti-vaqti bilan DBASni olib tashlaydi, shuning uchun manbali nazoratdan foydalanishga qarshilik bo'lmaydi.

Saqlangan protseduralar aniq mos keladi ... ular tuzilgan ishni boshlashdan oldin amalga oshiriladi va siz ularga huquqlarni boshqarishingiz mumkin.

Men ushbu muammoni saqlangan protsedura bo'yicha dastlabki kod bilan tushunmayapman. Agar siz ozgina intizom bo'lsa, ularni albatta boshqarishingiz mumkin.

Saqlangan protsedura manbai bo'lgan faylni har doim boshlang. Kodingizni yozganingizdan so'ng uni versiyalarni boshqarish uchun joylashtiring. Keyingi safar saqlangan protsedurangizni tahrir qilmoqchi bo'lsangiz, uni o'zingizdan chiqarib yuborasiz manba elementi Ma'lumotlar bazangizdan ko'ra boshqarish. Agar siz bunga rioya qilsangiz, sizning kodingiz kabi siz ham xuddi shunday yaxshi boshqaruv manbai bo'ladi.

Men Tom Kaytni Oracle-dan "Oracle" dan "Oracle" ni taklif qilmoqchiman ... Bu ozgina aloqasi yo'qligi haqida kodni qaerga yozish, lekin men yaxshi bilaman.

Bizning arizamizda so'rovning mazmuni (va ba'zan saqlangan protsedura qiyinligi) kodeksi mavjud. Bu bizga quyidagilarga imkon beradi:

  • versiyalarni boshqarish paytida barcha so'rovlarni olish oson
  • har xil ma'lumotlar bazasi serverlari uchun har bir so'rov uchun barcha o'zgarishlarni amalga oshirish
  • xuddi shu savol kodini bizning kodimiz orqali o'chiradi

Kirish boshqaruvi ma'lumotlar bazasida emas, balki o'rta qatlamda amalga oshiriladi, shuning uchun biz saqlangan protseduralar kerak emas. Bu maxsus so'rovlar va saqlangan protseduralar o'rtasidagi o'rtacha yo'lning bir turi.

Markaziy omborxonada joylashgan har ikkala saqlanadigan protseduralar uchun ishonchli dalillar mavjud, ammo (potentsial ravishda), ular sizning kodingiz bilan birga bo'lish qiyin, ammo ular kodingiz bilan tanishish qiyin. .

Saqlanadigan protseduralar samaraliroq, endi suvni o'z ichiga olmaydi. Havola matni

Saqlangan protsedura uchun Google-ning ijrosi VS dinamik so'rovlar baribir munosib dalillarni ko'rsatadi va ehtimol o'zingizning echimingizni olishingiz uchun yaxshiroqdir ...

Ba'zi narsalar haqida o'ylash kerak: kim saqlangan protseduralar, baribir?

Bu sizning ehtiyojlaringiz va imtiyozlaringizning muhim ahamiyatga ega ekanligi aniq, ammo jamoatchilikka xos muhitda maxsus so'rovlardan foydalanganda, xavfsizlik mavjudligi haqida o'ylash juda muhimdir. Har doim ularni parametrizatsiya qilish va SQL in'ektsiyalari kabi odatiy zaifliklarga rioya qiling.

Saqlangan protseduralar juda katta, chunki ular qayta hisoblab qolmasdan o'zgartirilishi mumkin. Men ularni iloji boricha tez-tez ishlatishga harakat qilaman.

Men foydalanuvchi kiritish asosida ishlab chiqariladigan so'rovlar uchun ad-hoc-dan foydalanaman.

Boshqalar tomonidan eslatib o'tilgan sabablarga ko'ra, shuningdek, profiler yoki professiya qismlaridan foydalanib, prankni sozlash osonroq. Shunday qilib, siz SQL serveriga nima yuborilganligini bilib olish uchun kimgadir murojaat qilishingiz shart emas

Agar siz ad-hoc so'rovlaridan foydalanayotgan bo'lsangiz, ular parametrlashtirilganligiga ishonch hosil qiling

Parametrlar SQL yoki Sprok ... Bu maqsad nuqtai nazaridan ahamiyati yo'q ... siz ulardan birini optimallashtirishni so'rashingiz mumkin.

Sprokning oxirgi ustunligi men uchun SQL huquqlarini boshqarish, faqat amaldagi SQL-dan foydalanayotganingizda, faqat parametrlardan foydalanayotgan bo'lsangiz, ulanishingiz bilan bog'liq bo'lgan kirish huquqini bera olishim mumkin. Satrlar ko'proq huquqlarga ega (masalan, ular kiradigan jadvallardan birida har qanday tanlov operatorini yozib olish).

Men hali ham parametrni afzal ko'raman, garchi ...

Sprokning ishlashidagi dalillar munozarali - 3 ta eng yaxshi RDBMS so'rov rejasidan foydalanmoqda va bir muddat. U hujjatlashtirilgan ... yoki boshqa 1995 yilmi?

Biroq, sizning arizangizda SQL-ni joylash juda dahshatli dizayn - kod xizmatlari ko'pchilik uchun yo'qolgan tushunchaga o'xshaydi.

Agar dastur ORM yordamida noldan noldan boshlanishi mumkin bo'lsa, u juda yaxshi tanlovdir, chunki sizning sinfingiz ma'lumotlar bazangiz modelini boshqaradi va vaqtni tejaydi.

Agar Orm tuzilmasi mavjud bo'lmasa, biz yaratishga durang yondashuvdan foydalandik XML fayl. SQL manbalari kerak bo'lganda SQL qatorlarini qidirish uchun (ular resurs infratuzilmasi). Agar SQL kodda biron bir kichik manipulyatsiya kerak bo'lsa, agar SQL satrining katta manipulyatsiyasi talab qilinsa, biz ushbu yondashuvni qayta ko'rib chiqamiz.

Ushbu duragay yondashuv ishlab chiqaruvchilarni boshqarishni osonlashtiradi (ehtimol biz ozchilik ekanligimiz, chunki mening jamoam so'rov rejasini o'qishga yordam beramiz) va devori SVN-dan oddiy tekshirishdir. Bundan tashqari, u O'tkazib yuborish RDBM-ni soddalashtiradi - shunchaki SQL resurs faylini almashtiring (albatta, o'rtada orm vositasi kabi emas, balki u eskirgan tizimlar bilan ishlaydi yoki ma'lumotlar bazasi qo'llab-quvvatlanmaydi)

Mening tajribam shuni ko'rsatadiki, so'rovlarning 90% talablar va / yoki saqlanadigan protseduralar umuman (kamida qo'lda) yozilmasligi kerak.

Ma'lumotni avtomatik ravishda kiritish kerak. Agar siz kompilyatsiya paytida yoki jadal bo'lsa, siz stolga (ob'ektiv mulkka) bir ustunni qo'shmoqchi bo'lsangiz, siz statistikani amaliy jihatdan yaratishni xohlaysizmi, deb qaror qilishingiz mumkin.

Men barcha ma'lumotlarni saqlashni afzal ko'raman kirish Ma'lumotga kirish darajasi to'g'ridan-to'g'ri SQL so'rovlarini bajaradigan dastur kodida. Boshqa tomondan, mantiq IdoraMen ma'lumotlar bazasiga Triggerlar, saqlangan protseduralar, foydalanuvchi funktsiyalari va boshqa narsa shaklida joylashtirdim. Men munosib ma'lumotlar bazasini ko'rib chiqayotgan narsalarga misol ma'lumotni yaratish - bu bizning mijozimizning ismi va familiyasining nomiga ega bo'lishi kerak, deylik. Endi foydalanuvchi interfeysi ba'zi qimmatli bo'lmagan mantiqiy mantiqiy mantiqiy displeyni talab qiladi. Ushbu avlod uchun men tiklangan protsedurani yarataman, keyin satr (yoki boshqa manba ma'lumotlari) yangilangan har doim tetik tomonidan boshlangan.

Aftidan, bu ma'lumotga kirish darajasi ma'lumotlar bazasi bo'lganligi va ma'lumotlar ulanish va ma'lumotlarga tegishli barcha narsalar sodir bo'ladi, deb o'ylaydigan bir oz keng tarqalgan. Bu shunchaki noto'g'ri, ammo men ushbu g'oyadan oqadigan ko'plab loyihalarni ko'raman. Ehtimol, bu mahalliy Fenomonon.

Ushbu tsiklning avvalgi moddasi bo'yicha biz ma'lumotlar jadvallardan olinishi, ularning tarkibini o'zgartirish, ularning tarkibini o'zgartirish, ma'lumotlar bazalari va ob'ektlarni yaratish, o'zgartirish va o'chirish. 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"

Saqlangan protsedura - Bu foydalanilgan holda yaratilgan trantata-SQL ko'rsatma paketining maxsus turi sQL tili va protsessual kengaytmalar. Paket va saqlanadigan protsedura o'rtasidagi asosiy farq shundaki, ular ma'lumotlar bazasi ob'ekt sifatida saqlanadi. Boshqacha qilib aytganda, takroriy vazifalarni bajarishning ishlashi va doimiyligi bo'yicha saqlanadigan protseduralar server tomonida saqlanadi.

Ma'lumotlar bazasi dvigatel tarkibiy qismi saqlangan protseduralar va tizim protseduralarini qo'llab-quvvatlaydi. Saqlangan protseduralar boshqa ma'lumotlar bazasi ob'ektlari kabi yaratilgan, i.e. DDL tilidan foydalanish. Tizim protseduralari Komponent ma'lumotlar bazasi dvigatel komponenti tomonidan taqdim etiladi va tizim katalogidagi ma'lumotlarga va uning modifikatsiyalarini o'zgartirish uchun ishlatilishi mumkin.

Saqlangan protsedura yaratishda siz parametrlarning ixtiyoriy ro'yxatini aniqlashingiz mumkin. Shunday qilib, protsedura har safar uning chaqirig'i tegishli dalillarni oladi. Saqlangan protseduralar o'z ichiga olgan qiymatni qaytarishi mumkin ma'lum bir foydalanuvchi Ma'lumot yoki agar xato bo'lsa, tegishli xato xabari.

Saqlangan protsedura ma'lumotlar bazasida ob'ekt sifatida saqlanishidan oldin oldindan tuzilgan. Tasdiqlangan protsedura shakli ma'lumotlar bazasida saqlanadi va har bir qo'ng'iroq uchun ishlatiladi. Saqlangan protseduralarning bu xususiyati unumdorlikni qayta takomillashtirish va unumdorlikni yaxshilashni takomillashtirish va takomillashtirish bo'yicha deyarli barcha holatlarda muhim foyda keltiradi. Saqlangan protseduralarning bu xususiyati ma'lumotlar bazasi va dasturlari o'rtasidagi almashinuvda ishtirok etayotgan ma'lumotlar hajmiga ijobiy ta'sir ko'rsatadi. Xususan, saqlangan protsedurani chaqirish, bir necha ming baytdan kam 70 baytni talab qilishi mumkin. Qayta ishlatiladigan protseduralar yordamida bir nechta foydalanuvchilar takrorlanadigan vazifalarni bajarishda bunday tejashning jamg'armasi juda muhim bo'lishi mumkin.

Saqlangan protseduralar quyidagi maqsadlarda ham ishlatilishi mumkin:

    ma'lumotlar bazasi jadvallari bilan harakatlar haqidagi jurnal jurnallarini yaratish.

Saqlangan protseduralardan foydalanish, foydalanuvchilar turli xil imtiyozlar bilan ta'minlanadigan qo'llanmadan foydalangan holda, berilgan darajadan yuqori bo'lgan xavfsizlik darajasidan ancha yuqori darajada xavfsizlikni boshqarish qobiliyatini ta'minlaydi. Bu saqlanadigan protsedura ijrosi bo'yicha avtorizatsiya, keyingi bo'limda ko'rsatilganidek, ushbu tartibda ko'rsatilgan ob'ektlarni o'zgartirish bo'yicha avtorizatsiya qilishga bog'liq emasligi sababli mumkin.

Yozish va / yoki o'qish jurnallarini yaratadigan saqlangan protseduralar taqdim etiladi. qo'shimcha imkoniyat Ma'lumotlar bazasini xavfsizligini ta'minlash. Protseptsiyalardan foydalanish, ma'lumotlar bazasi ma'muri foydalanuvchi yoki dastur dasturlari ma'lumotlar bazasiga kiritilgan o'zgartirishlarni kuzatishi mumkin.

Saqlangan protseduralarni yaratish va bajarish

Saqlangan protseduralar ko'rsatmalar asosida yaratiladi. Jarayonni yaratish.qaysi sintaksisga ega:

PRAPR_NAME [((@ parametr) tyme1 [\u003d default1])] Tashqi nomi uslubi_name sintaksis shartnomasi

Sxema_name parametri yaratilgan tartibda ko'rsatilgan tartibda egasi tomonidan tayinlangan sxemaning nomini belgilaydi. Proc_name parametri saqlangan protsedura nomini aniqlaydi. Parametr @ param1 - bu ma'lumotlar turi1 tipidagi parametr bilan belgilanadigan protseduraning parametridir (rasmiy dalil). Jarayon parametrlari tartibda mahalliy o'zgaruvchilar sifatida mahalliy o'zgaruvchilar kabi mahalliy o'zgaruvchilar kabi mahalliylashtirilgan. Jarayon parametrlari - bu foydalanish uchun qo'ng'iroq qilish ob'ektlari tomonidan uzatiladigan qiymatlar. Default1 parametri protsedura parametrining standart qiymatini aniqlaydi. (Standart qiymati ham nol bo'lishi mumkin.)

Variant ishlab chiqarish. Jarayon parametrining qaytarilishi ko'rsatilganligini ko'rsatadi va bu protsedura yoki tizimni chaqiradigan saqlangan protseduradan qaytarilishi mumkin.

Yuqorida aytib o'tilganidek, belgilangan tartibning oldindan yig'ilgan shakli ma'lumotlar bazasida saqlanadi va har bir qo'ng'iroqda ishlatiladi. Agar biron-bir sababga ko'ra, har safar o'tkaziladigan protsedurani e'lon qilganda, uni kiritish uchun belgilangan tartib talab qilinadi taraqqiyot parametrlari bilan. Taraqqiyot bilan ishlash variantidan foydalanish saqlangan protseduralarning eng muhim afzalliklaridan birini kamaytiradi: bir kompilyatsiya tufayli ishlashni yaxshilash. Shuning uchun qayta ishlash variantidan faqat saqlangan protsedura foydalanadigan ma'lumotlar bazasi ob'ektlarining tez-tez o'zgarishi bilan ishlatilishi kerak.

Taklif sifatida bajaring Saqlangan protsedura tomonidan tasdiqlanganidan keyin bajarilishi kerak bo'lgan xavfsizlik kontekstini belgilaydi. Ushbu kontekstni belgilab, ma'lumotlar bazasi dvigatelidan foydalanib, ushbu saqlangan protsedura bilan bog'liq ob'ektlarga kirish huquqini tekshirish uchun foydalanuvchi hisoblarini tanlashingiz mumkin.

Yaratilgan tartibda o'tkazilgan bayonnomadan odatiy foydalanish faqat oldindan belgilangan SySADMin serveri va Pred_Duganer yoki DB_DDDLADMIN ma'lumotlar bazasi roli bo'lishi mumkin. Ammo ushbu rollarning a'zolari ko'rsatmalardan foydalangan holda boshqa foydalanuvchilarga boshqa foydalanuvchilarga berishlari mumkin. Nuqta tartibni yaratish.

Quyidagi misol, loyiha jadvali bilan ishlash uchun oddiy saqlanadigan protsedura yaratilishini ko'rsatadi:

Sampedb-dan foydalaning; Protsent Loyihani yangilash loyihasi \u003d byudjet + byudjet * @ foizi / 100;

Yuqorida aytib o'tilganidek, ikkita paketni ajratish uchun ishlatiladi ko'rsatma.. Yurish tartibini boshqa paketda boshqa tranka-kvl ko'rsatmalari bilan birlashtirish mumkin emas. Tajribali Acceling Protection barcha loyihalar uchun @percentcent parametri tomonidan belgilanadigan barcha foizlar uchun byudjetlarni oshiradi. Jarayon, shuningdek, protsedura yo'qolganda foydalanilsa, foydalaniladigan standart foiz raqami (5) qiymatini belgilaydi.

Saqlangan protseduralar mavjud bo'lmagan jadvallarga murojaat qilishi mumkin. Ushbu mulk sizga birinchi navbatda mos keladigan jadvallarni yaratmasdan protsedurani protsedura kodini bajarishga imkon beradi.

Joriy ma'lumotlar bazasida saqlanadigan asosiy saqlangan protseduralardan farqli o'laroq, Vaqtinchalik saqlanadigan protseduralarni Vaqtinchalik saqlanadigan protseduralarni Vaqtinchalik saqlanadigan protseduralarni vasvasabentining vaqtincha saqlash tartibini yaratish mumkin. Vaqtinchalik saqlanadigan protseduralar mavjud bo'lgan holatlardan biri ma'lumotlar bazasiga ulanganda ma'lum bir guruh ko'rsatmalarning takroriy qatl etilishidan qochish istagi bo'lishi mumkin. Siz mahalliy yoki global usullarni yaratishingiz mumkin. Buning uchun mahalliy protseduraning nomi bitta belgi # (#poc_name) va global protseduraning nomi ikki baravar (## Pro_name).

Mahalliy vaqtincha saqlanadigan protsedura faqat foydalanuvchi tomonidan bajarilishi va u yaratilgan ma'lumotlar bazasiga ulanish paytida. Barcha foydalanuvchilar vaqtincha vaqtincha protsedura o'tkazishi mumkin, ammo u bajarilgan oxirgi ulanish tugagunga qadar (odatda bu protseduraning yaratuvchisi aralashmasi).

Saqlangan protseduraning hayotiy aylanishi ikki bosqichdan iborat: uning yaratilishi va ijrosi. Har bir protsedura bir marta yaratilgan va bir necha marta bajariladi. Saqlangan protsedura amalga oshiriladi ko'rsatmalarni bajaring Protsedura egasi bo'lgan yoki ushbu protseduraga kirish huquqiga ega foydalanuvchi. Qo'llash bo'yicha ko'rsatma quyidagi sintaksisga ega:

[] [] [] [#return_status \u003d] (prokter_name | @Proc_name_var) ([@ parametr1 \u003d] @ paraml) .. Sintaksis kelishuvlari

Qaytish_status parametridan tashqari, bajarilgan ko'rsatmalarning barchasi bir xil nomning ko'rsatmalarini yaratish bo'yicha ko'rsatmalar sifatida bir xil mantiqiy ahamiyatga ega. Qaytish_status parametri protseduraning qaytish holati saqlanib qolgan butun o'zgaruvchini belgilaydi. Parametrning qiymati yoki doimiy ravishda (qiymat) yoki mahalliy o'zgaruvchi (@VARILE). Ko'rsatilmagan parametrlarning qiymatlarining tartibi muhim emas, ammo ismiqsiz parametrlarning qadriyatlari, ular tuzilgan tartibda ko'rsatmalarda belgilangan tartibda ta'minlanishi kerak.

Bajarilish Jarayon ta'rifida ko'rsatilgan protseduraning parametrlari uchun standart qiymatlarni taqdim etadi. Jarayon standart qiymat aniqlangan va parametr etishmayotgan va parametr mavjud bo'lgan parametrning qiymatini kutganda yoki standart kalit so'z ko'rsatilgan, keyin xato yuzaga keladi.

Topshiriq ko'rsatmasi birinchi paket ko'rsatma, kalit so'zni bajarib bo'lmaydi. Shunga qaramay, har bir paketda ushbu so'zni qo'shish yanada ishonchli bo'ladi. Qabul qilingan yo'riqnomadan foydalanish quyidagi misolda keltirilgan:

Sampedb-dan foydalaning; RezyumeBudget 10;

Ushbu misolda keltirilgan ko'rsatma barcha loyiha byudjetini 10 foizga oshiradi, bu esa 10 foizga oshiradi.

Quyidagi misol, xodim va ish stollarida ma'lumotlarni qayta ishlash bo'yicha saqlanadigan protsedurani yaratish:

Masalan, modapid protsedurasi saqlanadigan protseduralar yaxlitlik jarayonining bir qismi sifatida saqlangan protseduralar (xodim va ish stollari o'rtasida) ko'rsatilgan tartibda ko'rsatilgan. Shunga o'xshash saqlangan protsedura aslida moslashuvni ta'minlaydigan trigger ta'rifida ishlatilishi mumkin.

Quyidagi misolda saqlanadigan protsedurada chiqish taklifidan foydalanish ko'rsatilgan:

Ushbu saqlangan protsedura quyidagi ko'rsatmalar asosida bajarilishi mumkin:

@QuendalityDeleTee int; Deleteeeeeeeeeee @ EmpID \u003d 18316, @ [Elektron pochta bilan himoyalangan] Mahsulot ishlab chiqarish; Bosish n "olib tashlandi Xodimlar:" (Navrar (30), liquendeleteleteee);

Ushbu protsedura xodimi @empID jadval raqami bilan band bo'lgan va parametrni belgilaydigan loyihalar sonini hisoblaydi. © Hisoblagich. Ushbu planshetning barcha satrlarini xodimi va ish_on jadvallaridan o'chirib, hisoblangan qiymat liquendeleteeeeee o'zgaruvchisi tayinlanadi.

Parametr qiymati faqat Chiqish opsiyasi belgilangan bo'lsa, qo'ng'iroq qilish jarayoni bilan qaytariladi. Yuqoridagi misolda DeeteeEEE amal protsedurasi @Counter parametrini qo'ng'iroq qilish tartibini o'tkazadi, shuning uchun saqlangan protsedura tizimning qiymatini qaytaradi. Shuning uchun @counter parametrini ishlab chiqarish va bajarilgan ko'rsatmalarni e'lon qilganda, protsedurada va bajarilgan ko'rsatmalarni e'lon qilishda ko'rsatilishi kerak.

Natijalar bilan takliflar ko'rsatmalar to'plamini bajaradi

SQL Server 2012 yilda qo'llanma kiritilgan natija to'plamlari bilan taklifMuayyan sharoitlarni amalga oshirishda siz saqlangan protseduraning olingan to'plamining shaklini o'zgartirishingiz mumkin.

Keyingi ikkita misol ushbu taklifni tushuntirishga yordam beradi. Birinchi misol - natijalar keltirilgan taklif bajarilmaganda natija qanday ko'rinishda ko'rinishi mumkinligini ko'rsatadigan kirish misoli:

Xatolar tartibi - bu planshet xonalarini va ma'lum bir bo'limda ishlaydigan barcha xodimlarning ismlarini namoyish etadigan oddiy protsedura. Kafedra raqami - bu protsedura parametridir va siz qachon deb nomlanganligini ko'rsatishingiz kerak. Ushbu protseduraning bajarilishi ikkita ustunli jadvalni ko'rsatadi, uning sarlavhalari ma'lumotlar bazasi stolining mos ustunlarining nomlari bilan to'g'ri keladi, I.E. ID va Familiya. Natija ustunining sarlavhasini o'zgartirish (shuningdek, ularning ma'lumotlar turi), SQL Server 2012 natijalari bilan yangi taklifni o'zgartiradi. Ushbu taklifning qo'llanilishi quyidagi misolda keltirilgan:

Sampedb-dan foydalaning; "D1" ishchilari natijalari bilan ((null emas, [familiya) char (20) nolga teng emas));

Ushbu usul natijasida olingan saqlanadigan protsedura natijasi quyidagicha bo'ladi:

Ko'rinib turibdiki, bajarilgan protsedurani bajarilgan natijalarga ko'ra, bajarilgan qo'llanmada ko'rsatilgan tartibda ushbu tartibda keltirilgan natijada olingan to'plamning nomlarini va turlarini o'zgartirish imkonini beradi. Shunday qilib, ushbu yangi funktsional imkoniyat saqlangan protseduralar qatliyatiga va natijalarini yangi stolga joylashtirishda yanada moslashuvchanlikni ta'minlaydi.

Saqlangan protseduralar tuzilmasini o'zgartirish

Ma'lumotlar bazasi dvigateli ham ko'rsatmalarni qo'llab-quvvatlaydi O'zgartirish tartibi. Saqlangan protseduralar tuzilmasini o'zgartirish. Vazifalarda o'zgartirish tartib-qoidalari odatda tartibda trantata-kvl ko'rsatmalarini o'zgartirish uchun qo'llaniladi. Aloqaviy protseduraning barcha parametrlari Yurish tartibi to'g'risidagi bayonot parametrlari sifatida bir xil qiymatga ega. Ushbu yo'riqnomadan foydalanishning asosiy maqsadi saqlangan protseduralarning mavjud huquqlarini bekor qilmaslikdir.

Ma'lumotlar bazasi dvigatelini qo'llab-quvvatlaydi kursor ma'lumot turi. Ushbu ma'lumotlar turi Saqlangan tartibda kursorlarni e'lon qilish uchun ishlatiladi. Kursor - So'rov natijalarini (odatda ketma-ket terish) saqlash uchun ishlatiladigan dasturlash dizayni va foydalanuvchilarga ushbu natija chizig'ini ko'rsatish imkoniyatiga ega bo'lish uchun foydalaniladi.

Foydalanilgan saqlanadigan protseduralarni olib tashlash uchun drop protsedurasi ko'rsatmalari. Saqlangan protsedurani o'chirish faqat oldingi Db_Uner va SysAdmin rollarining egasi yoki a'zolari bo'lishi mumkin.

Saqlangan protseduralar va chorshanba kuni Clr

SQL Server CLR bazalarini (umumiy tilning ish vaqti) ni qo'llab-quvvatlaydi, bu sizga turli xil ma'lumotlar bazasi ob'ektlarini ishlab chiqishga imkon beradi (foydalanuvchini belgilangan protseduralar, foydalanuvchi ma'lumotlari turlari va foydalanuvchi ma'lumotlari turlarini), C # va vizual asosiy tillarni qo'llashni ta'minlaydi. Clr Atrof-muhit shuningdek, ushbu ob'ektlarni umumiy foydalanish muhiti tizimidan foydalanib ko'rsatishga imkon beradi.

CLR Atrof-muhitga ruxsat beriladi va taqiqlanadi clr_entama. Tizim tartibi sp_configure.Ko'rsatmalarni bajarishga undaydi Qayta tiklash.. Quyidagi misolda, Sp_Configurure tizimi protsedurasidan CLR Atrof-muhitni ishlatishga imkon berishingiz mumkin:

Sampedb-dan foydalaning; Ixting Sp_ConFigurure "CLR_UTTABT", 1 ta qayta sozlash

Clr muhitidan foydalangan holda protsedurani yaratish, tuzish va saqlash uchun siz belgilangan tartibda quyidagi bosqichlar ketma-ketligini bajarishingiz kerak:

    C # yoki vizual bazada saqlanadigan protsedura yarating va keyin uni tegishli kompilyator yordamida tuzing.

    Ko'rsatmalardan foydalanish Assambleyani yarating., Tegishli bajariladigan faylni yarating.

    Qo'llash bo'yicha ko'rsatmalardan foydalangan holda protsedurani bajaring.

Quyidagi rasm ilgari aytilgan qadamlarning grafik sxemasini ko'rsatadi. Quyida ushbu jarayonning batafsil tavsifi.

Avval har qanday rivojlanish muhitida kerakli dasturni yarating, masalan Vizual studiya.. Tayyor dasturni C # yoki Visual Asosiy kompilyator yordamida ob'ekt kodini tuzing. Ushbu kod dinamik kutubxona faylida saqlanadi, bu Assambleya Yo'l-yo'riqnoma tuzish uchun manba bo'lib xizmat qiladi, ular oraliq boshqaruv kodini yaratadi. Keyin, bajariladigan kodni ma'lumotlar bazasi ob'ekti sifatida saqlash bo'yicha ko'rsatmani yaratish tartibini amalga oshiring. Va nihoyat, bajarilgan yo'riqnomadan foydalanib, bajarilgan yo'riqnomadan foydalanib bajaring.

Quyidagi misol C # tilida saqlangan protseduraning dastlabki kodini ko'rsatadi:

System.Data.SQLCRingdan foydalanish; Microsoft.SQLServer.serverdan foydalanish; Davlatning qisman sinfi Standasturlar (SQLOCKONSESSECTON) () yangi kmdlonnection \u003d ulanish (). Sqlmannectection ("Ulanish ulanishi \u003d haqiqiy") *) "Xodimlar soni" + "xodimlar soni"; satr \u003d (int) CMD.X.XITECTURESEARAR (); ulanish.close (); Qayta foydalanish;)

Ushbu protsedura xodimlar jadvalida qatorlar sonini hisoblash uchun so'rovni amalga oshiradi. Dasturning boshida ko'rsatmalardan foydalangan holda, uni bajarishi uchun zarur bo'lgan oqimlar belgilangan. Ushbu ko'rsatmalardan foydalanish sizga quyidagicha belgilashga imkon beradi manba kodi Sinf nomlari tegishli nomlarni aniq ko'rsatmasdan. Keyinchalik u qo'llaniladigan Saqlangan Sinfdromatsiyalar tomonidan belgilanadi. sQLPRESUREKBu kompilyatorni ushbu sinf saqlanadigan protsedura ekanligini ma'lum qiladi. Sinf kodi ichida, plitkalar () usuli aniqlanadi. Ma'lumotlar bazasi tizimiga ulanish sinf namunasi bilan belgilanadi. SQLOKEKTON.. Ushbu holatning ulanishini ochish uchun qo'llaniladi. Lekin izohlararo () usul sinf instantsiyasiga murojaat qilishga imkon beradi Sqlcommm.kerakli SQL buyrug'i o'tgan.

Keyingi parcha kodi:

CMD.comMandText \u003d "Ishchilar soni +" xodimlarining soni "+" xizmatchilari soni "sifatida" ni tanlang;

xodimlar stolidagi qatorlar sonini hisoblash va natijani namoyish qilish uchun ko'rsatmalar-ni tanlang. Buyruq matni yaratilgan CMD o'zgaruvchan CMD xususiyatlarini yaratgan CMD () usulida qaytarilgan. Keyingisi deyiladi ijrocingcalalar () usuli Sqlcommand misol. Ushbu usul int ma'lumotlarning butun soniga aylantirilgan va qatorlar o'zgaruvchisiga tayinlangan skarar qiymatini qaytaradi.

Endi siz ushbu kodni vizual studiya muhiti yordamida tuzishingiz mumkin. Men bu sinfni yolg'on ko'rsatgan loyiha bilan qo'shdim, vizual studiya yig'inni bir xil nomga kiritdi * .Dll kengaytmasi bilan bir xil nomga kiritadi. Quyidagi misol ko'rsatilgan protsedurani yaratishning keyingi bosqichi ko'rsatilgan: bajarilgan kodni yaratish. Ushbu misolda kodni bajarishdan oldin, siz kompilyatsiya qilingan DLL faylining joylashgan joyini (odatda disklar papkasida joylashgan) topishingiz kerak.

Sampedb-dan foydalaning; "D: \\ Loyihalar \\ ClrstededProcoures" dan yig'ish kleymini yarating \\ bin \\ CPROCTURES.DLL "Sertim_et \u003d Xavfsiz

O'rnatish bo'yicha ko'rsatmalar boshqariladigan kodni kiritish uchun boshqariladigan kodni kiritadi va foydalanuvchi funktsiyasi va tetiklashtiruvchi tomonidan belgilanadigan CLE Media protseduralari yaratilishi mumkin bo'lgan tegishli ob'ektni yaratadi. Ushbu ko'rsatma quyidagi sintaksisga ega:

(Dll_file) sintaksis bitimlaridan (Dll_File) to'plamidan Assambleya montaji_name-ni yarating

Assambleya_name parametrini yig'ish nomini ko'rsatadi. Ixtiyoriy taklifda ruxsatnoma, ushbu majlis egasi sifatida rolning nomi ko'rsatilgan. Balishuvdan boshlab, siz yuklab olingan joyga yo'l ko'rsatilgan.

Ruxsat_set bilan taklif. Bu majlisni yaratish bo'yicha ko'rsatmalarning juda muhim taklifidir va har doim ko'rsatiladi. U yig'ish kodi tomonidan taqdim etiladigan foydalanish huquqlari to'plamini belgilaydi. Xavfsiz huquqlar berish eng cheklangan. Ushbu huquqlarga ega bo'lgan majlis kodeksi tashqi tizim resurslariga, masalan, fayllar kabi mavjud emas. Tashqi_ACCSESSEY HUQUQLARI CHORASI ma'lum tashqi tizim resurslariga kirish imkoniyatini va xavfli huquqlar uchun ma'lumotlar bazasi tizimida va tashqarisida resurslarga cheksiz kirishni ta'minlaydi.

Assambleya kodi to'g'risidagi ma'lumotlarni saqlash uchun foydalanuvchini yig'ish bo'yicha ko'rsatmalarni bajarishga qodir bo'lishi kerak. Assambleya egasi bu ko'rsatmalarni bajaradigan foydalanuvchi (yoki roli). Majlis egasi avtorizatsiya taklifini qo'llash bo'yicha ko'rsatmalar yordamida boshqa foydalanuvchi qilishi mumkin.

Ma'lumotlar bazasi dvigatel tarkibiy qismi shuningdek eksklyatsiya yig'ish va bir tomchi yig'in ko'rsatmalarini qo'llab-quvvatlaydi. Ta'rifni o'zgartirish Montajni yangilash uchun ishlatiladi so'nggi versiya. Ushbu ko'rsatma tegishli yig'ish bilan bog'liq fayllarni qo'shadi yoki o'chiradi. Oziq-ovqatlar Yig'ish Belgilangan yig'ish va barcha tegishli fayllarni joriy ma'lumotlar bazasidan olib tashlaydi.

Quyidagi misolda, ilgari amalga oshirilgan boshqariladigan kod asosida saqlangan kodni yaratish uchun ko'rsatilgan:

Sampedb-dan foydalaning; Planshetlar, tashqi nomi sifatida, tashqi nomi sifatida .Shungordlar.

Misolda ko'rsatmalar misollarda bir xil ko'rsatmalardan farq qiladi tashqi nomi. Ushbu parametr klom muhiti tomonidan yaratilganligini ko'rsatadi. Ushbu jumlaning nomi uchta qismdan iborat:

assambleya_name.class_name.method_name.

    assambleya_name - yig'ish nomini bildiradi;

    class_name - umumiy sinfning ismini bildiradi;

    usul_name - bu ixtiyoriy qism bo'lib, sinfda ko'rsatilgan usulning nomini ko'rsatadi.

PoyceceSeese protseduralari quyidagi misolda keltirilgan:

Sampedb-dan foydalaning; @Count int bajarilgan @count \u003d plapme-fayllar chop etilgan @count 7 ga qaytadi

Chop etish bo'yicha ko'rsatma xodim jadvalidagi qatorlarning hozirgi sonini qaytaradi.

Sizning protsedurangizga quyidagilar o'rnatilgan chiziqni kiriting:

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.

Trantac-kQL.

Ob'ektni 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.

Trantac-kQL.

DBB.Mitable-ni tanlang - buni qanday qilib yaxshi bajarish kerak - va shuning uchun tanlangan emas - Istalgan narsa - INTER DBB.MYROQ protsedurasi - bu juda yaxshi - bu, ayniqsa, ixtilof Miypok.

"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.

Agar mavjud bo'lsa, mavjud bo'lsa (1-ni tanlang) (* 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 mantiqiy.