Internet Derazalar Android
Kengaytirmoq

Saqlangan protseduralardan foydalaning. Saqlangan protsedura va vakillik o'rtasidagi farq nima? T-SQL - tomchi protsessual qo'llanmasi bo'yicha saqlanadigan protsedura o'chirish

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.

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

Saqlangan protseduralar tushunchasi aniqlandi. Parametrlar bilan saqlangan tartibda saqlanadigan protseduralar yaratilish, o'zgartirish va foydalanish misollari. Kirish va chiqish parametrlarining ta'rifi berilgan. Saqlangan protseduralarni yaratish va qo'ng'iroq qilish misollari beriladi.

Saqlangan protsedura tushunchasi

Saqlangan protseduralar qo'llanilishi, ular qo'llanilishi bir-birlari bilan bog'liq guruhlarni ifodalaydi, ular dasturchi va moslashuvchan, chunki amalga oshirish uchun saqlangan protsedura Ko'pincha SQL individual bayonotlaridan ancha sodda bo'lishga o'xshaydi. Saqlangan protseduralar bir yoki bir nechta SQL bayonotlaridan yoki funktsiyalaridan iborat va ma'lumotlar bazasida kompilyatsiya shaklida saqlanadigan buyruqlar to'plamidir. Ma'lumotlar bazasida ishlash saqlangan protseduralar SQL individual bayonotlari o'rniga foydalanuvchiga quyidagi afzalliklarni beradi:

  • kerakli operatorlar allaqachon ma'lumotlar bazasida mavjud;
  • ularning barchasi sahnadan o'tishdi sintaktik tahlil va bajariladigan formatda; oldin saqlangan protsedura o'tkazish SQL serveri buning uchun êilish rejasini ishlab chiqaradi, optimallashtirish va kompilyatsiyani amalga oshiradi;
  • saqlangan protseduralar Qo'llab-quvvatlash modulli dasturlash ular sizning nazorat qismida mustaqil, kichikroq va qulaylik uchun katta vazifalarni sindirishingizga imkon beradi;
  • saqlangan protseduralar boshqalarga sabab bo'lishi mumkin saqlangan protseduralar va funktsiyalar;
  • saqlangan protseduralar boshqa turdagi amaliy dasturlardan kelib chiqishi mumkin;
  • qoida sifatida, saqlangan protseduralar individual operatorlar ketma-ketligidan tezroq amalga oshiriladi;
  • saqlangan protseduralar Xato qilish osonroq: ular o'nlab va yuzlab buyruqlardan iborat bo'lishi mumkin, ammo ularni ishga tushirish uchun faqat keraklining nomini belgilash uchun etarli saqlangan protsedura. Bu sizga mijoz tomonidan yuborilgan so'rov hajmini serverga kamaytirishga imkon beradi, shuning uchun tarmoqdagi yuk.

Saqlash protseduralari ular qatl etilgan joyda, tarmoq orqali uzatiladigan ma'lumotlar miqdorining pasayishini ta'minlaydi va tizimning umumiy bajarilishini yaxshilaydi. Ariza saqlangan protseduralar Dasturiy ta'minot majmualarining hamrohligini soddalashtiradi va ularga o'zgartirishlar kiritadi. Odatda ma'lumotlar bazasi serverida qoidalar va ma'lumotlarni qayta ishlash algoritmlar shaklida yaxlitlikning barcha cheklanishi amalga oshiriladi va yakuniy dastur uchun belgilangan shaklda mavjud. saqlangan protseduralarma'lumotlar qayta ishlash interfeysini anglatadi. Ma'lumotlarning yaxlitligini ta'minlash uchun, shuningdek, xavfsizlik maqsadida, odatda ma'lumotlarga to'g'ridan-to'g'ri kirishni amalga oshirmaydi - ular bilan ishlaydigan barcha ishlarni aniqlash orqali amalga oshiriladi saqlangan protseduralar.

Shunga o'xshash yondashuv ma'lumotlarni qayta ishlash algoritmlarini juda sodda o'zgartiradi, darhol tarmoq barcha foydalanuvchilar uchun mavjud bo'lib, tizimni o'zgartirishsiz tizimni kengaytirish imkoniyatini beradi: etarli o'zgaradi saqlangan protsedura Ma'lumotlar bazasi serverida. Ishlab chiquvchi dasturni qayta tuzishning hojati yo'q, uning nusxalarini yaratish, shuningdek foydalanuvchilarni yangi versiya bilan ishlash zarurligi to'g'risida ko'rsatma berish. Foydalanuvchilar tizimga o'zgarishlar kiritilishini taklif qilmasligi mumkin.

Saqlangan protseduralar Stollar yoki boshqa ma'lumotlar bazasi ob'ektlaridan qat'iy nazar bor. Ular mijoz dasturi tomonidan, ikkinchisi deb nomlanadi saqlangan protsedura yoki tetik. Ishlab chiquvchi kirish huquqlarini boshqarishi mumkin saqlangan protsedura, uning qatl etilishi yoki bajarilishini taqiqlash. Kodni o'zgartirish saqlangan protsedura Faqat uning egasi yoki asosiy ma'lumotlar bazasining a'zosiga ruxsat beriladi. Agar kerak bo'lsa, siz uni bitta foydalanuvchidan boshqasiga o'tkazishingiz mumkin.

Sql Server MS-da saqlangan protseduralar

SQL serveri bilan ishlashda foydalanuvchilar ba'zi xatti-harakatlarni amalga oshiradigan o'zlarining protseduralarini yaratishi mumkin. Saqlangan protseduralar To'liq o'chirilgan ma'lumotlar bazasi ob'ektlari va shuning uchun ularning har biri ma'lum bir ma'lumotlar bazasida saqlanadi. To'g'ridan-to'g'ri qo'ng'iroq saqlangan protsedura Agar u protsedura joylashgan ma'lumotlar bazasi kontekstida amalga oshirilgan bo'lsa, bu faqat u amalga oshirilgan bo'lsa.

Saqlangan protseduralar turlari

SQL server bir nechta turlarga ega saqlangan protseduralar.

  • Muntazam saqlangan protseduralar Turli ma'muriy harakatlarni amalga oshirish uchun mo'ljallangan. Deyarli barcha server ma'muriyati xatti-harakatlari ularning yordami bilan amalga oshiriladi. Tizim deyish mumkin saqlangan protseduralar Ular tizim jadvallari bilan ishlashni ta'minlaydigan interfeys, natijada foydalanuvchilar va tizim ma'lumotlar bazalarining tizim jadvallaridan ma'lumotlarni o'zgartirish, o'chirish, o'chirish, o'chirish va namuna olish uchun qisqartirildi. Muntazam saqlangan protseduralar SP_ prefiksi mavjud, tizimlar bazasida saqlanadi va boshqa ma'lumotlar bazasining kontekstida bo'lishi mumkin.
  • Odat saqlangan protseduralar Biz ba'zi harakatlarni amalga oshiramiz. Saqlangan protseduralar - ma'lumotlar bazasi ob'ekti. Natijada, har biri saqlangan protsedura U bajariladigan muayyan ma'lumotlar bazasida joylashgan.
  • Vaqtincha saqlangan protseduralar Faqat bir muncha vaqt, shundan so'ng ular avtomatik ravishda server tomonidan yo'q qilinadi. Ular mahalliy va globalga bo'lingan. Mahalliy vaqtinchalik saqlangan protseduralar Faqat ushbu birikmadan kelib chiqishi mumkin. Bunday protsedura yaratishda, u bitta belgidan boshlab ismini berish kerak. Barcha vaqtincha ob'ektlar singari, saqlangan protseduralar Ushbu tur avtomatik ravishda o'chirilganda avtomatik ravishda o'chiriladi, qayta ishga tushiriladi yoki Serverni to'xtatadi. Global vaqtinchalik saqlangan 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 protseduralar yaratish, o'zgartirish va olib tashlash

Jonzot saqlangan protsedura quyidagi vazifalarni taklif qiladi:

  • yaratilgan turni aniqlash saqlangan protsedura: vaqtincha yoki foydalanuvchi. Bundan tashqari, siz o'zingiz tizimingizni yaratishingiz mumkin saqlangan protseduraSiz SP_ prefiksi bilan ismingizni tayinlasangiz va uni tizim ma'lumotlar bazasiga joylashtirsangiz. Bunday protsedura har qanday mahalliy server ma'lumotlar bazasi kontekstida mavjud bo'ladi;
  • kirish huquqlarini rejalashtirish. Yaratishda saqlangan protsedura Ma'lumotni yodda tutish kerakki, u o'z foydalanuvchisini yaratgan ma'lumotlar bazasi ob'ektlariga kirish huquqiga ega bo'ladi;
  • ta'rif saqlangan protsedura parametrlari. Ko'pgina dasturlash tillarining bir qismi bo'lgan protsedura kabi, saqlangan protseduralar kirish va chiqish parametrlari bo'lishi mumkin;
  • kodni rivojlantirish saqlangan protsedura. Jarayon kodi har qanday SQL buyruqlarining ketma-ketligini, shu jumladan boshqalarning chaqirig'ini o'z ichiga olishi mumkin. saqlangan protseduralar.

Yangi va o'zgarishi mumkin bo'lgan o'zgarishlarni yaratish saqlangan protsedura Quyidagi buyruq yordamida amalga oshiriladi:

<определение_процедуры>:: (Yaratish | ni o'zgartirish) Pro nomi_name [; raqam] [(@ parametre_da nomi) [\u003d N] SQL_ [n] kabi

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, yaratilganlarni joylashtirish uchun saqlangan protsedura Muayyan ma'lumotlar bazasida siz ushbu ma'lumotlar bazasi kontekstida siz yaratishda protsedura buyrug'ini bajarishingiz kerak. Tanani ishlov berishda saqlangan protsedura Xuddi shu ma'lumotlar bazasi ob'ektlari qisqartirilgan ismlardan foydalanishi mumkin, i.e. ma'lumotlar bazasining nomini ko'rsatmasdan. Boshqa ma'lumotlar bazalarida joylashgan ob'ektlarga murojaat qilishingiz kerak bo'lganda ma'lumotlar bazasi nomi kerak.

Ismdagi raqam identifikatsiya raqami. saqlangan protsedura, buni protsedura guruhida aniq belgilab qo'ying. Boshqaruv protseduralari uchun qulayligi uchun mantiqan bir xil turdagi saqlangan protseduralar Siz ularga bir xil ismlarni tayinlash orqali guruhlashingiz mumkin, ammo turli xil identifikatsiya raqamlari.

Yaratilgan va mahsulotni uzatish uchun saqlangan protsedura Parametrlardan foydalanish mumkin, ularning ismlari, masalan, mahalliy o'zgaruvchilar @ belgisi bilan boshlanishi kerak. Biri saqlangan protsedura 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.

Tegishli bo'lgan ma'lumotlar turini aniqlash uchun parametr saqlanadigan protsedura, Har qanday SQL ma'lumotlar turlari mos, shu jumladan hisoblab chiqilgan. Biroq, kursor ma'lumotlarining turi faqat ishlatilishi mumkin chiqish parametrlari saqlangan protsedura. Kalit so'z chiqishi bilan.

Kalit so'zning chiqishining mavjudligi tegishli parametr ma'lumotlarni qaytarish uchun mo'ljallanganligini anglatadi saqlangan protsedura. Biroq, bu parameter qiymatlarni uzatish uchun mos emas degani emas saqlangan protsedura. Chiqish kalit so'zini ko'rsatish ketayotganda serverni belgilaydi saqlangan protsedura Jarayon parametr qiymati deb nomlanganda ko'rsatilgan mahalliy o'zgaruvchi parametrning hozirgi qiymatini belgilang. 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. Bu buni aniqlaydi chiqish parametrlari Olingan to'plam bo'ladi.

Standart kalit so'z - bu tegishli bo'lgan qiymat standart parametr. 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 ishlash rejasini belgilashda ijrochi rejani tuzish tizimini belgilaydi saqlangan protsedura Har bir qo'ng'iroq bilan.

Replikatsiya parametri ma'lumotni takrorlash va yaratilganlarni kiritish talabi saqlangan protsedura Nashr etish uchun maqola sifatida.

Shifrlash kalit so'zi server shifrlash kodini belgilaydi saqlangan protsedurabu amalga oshiradigan mualliflik huquqi algoritmlaridan himoya qilish imkoniyatini ta'minlaydi saqlangan protsedura.

Kalit so'zlar tananing boshida joylashganidek saqlangan protsedura. Yoki bu yoki boshqa yoki boshqa bajariladigan SQL buyruqlari to'plami. Jarayonning organida deyarli barcha SQL buyruqlari qo'llanilishi mumkin, bitimlar e'lon qilinadi, qulflar o'rnatilgan va boshqa saqlangan protseduralar. Chiqish saqlangan protsedura Qaytish buyrug'i yordamida amalga oshirishingiz mumkin.

Saqlangan tartibni olib tashlash jamoada amalga oshiriladi:

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

Saqlangan tartib-qoidalarni bajarish

Uchun saqlangan tartib-qoidalarni bajarish Buyruq ishlatiladi:

[[Ute] ismi_name [; raqam] [[@ parametr_name \u003d] (qiymat | @ ism_name) |] [, ... n]

Agar qo'ng'iroq bo'lsa saqlangan protsedura Paketdagi yagona buyruq emas, 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 foydalanish faqat qachon e'lon qilingan parametrlar uchun protsedura yaratish Kalit so'z chiqishi bilan.

Jarayonni qachon chaqirganda, standart so'zlashuv parametr uchun belgilanadi, u ishlatiladi standart qiymat. Tabiiyki, belgilangan standart so'z faqat u aniqlangan parametrlar uchun ruxsat etiladi. standart qiymat.

Qabul qilingan buyruq sintaksisidan, parametr nomlarini protsedura chaqirilishi mumkinligi aniq. Biroq, bu holda foydalanuvchi parametrlar uchun qiymatlarni bir xil tartibda belgilashi kerak, ularda qachon ro'yxatga olingan protsedura yaratish. Parametr tayinlang standart qiymatRo'yxatda bo'lganda uni sog'indim. Agar siz aniqlangan parametrlarni tark qilmoqchi bo'lsangiz standart qiymat, qo'ng'iroq paytida etarlicha aniq parametr nomlari saqlangan protsedura. Bundan tashqari, bunday tarzda siz parametrlarni va ularning qadriyatlarini o'zboshimchalik bilan tartibda ro'yxatlashingiz mumkin.

Shuni yodda tutingki, protsedurani yoki qiymatlarsiz parametr nomlari yoki faqat qiymatlarsiz qiymatlar ko'rsatilgan. Ularning kombinatsiyasi ruxsat berilmaydi.

12.1-misol. Parametrlarsiz protsedura. Chempionlar unvonini olish va Ivanov tomonidan sotib olingan tovarlarning narxini ishlab chiqing.

My_proc1-ni tanlang. Narx, mahsulot. Mijozlar \u003d tranzaktsiyalar. Mijoz \u003d tranzaktsiyalar. Codclienientent \u003d tranzaktsiya. COCCCliensione. Mijoz uchun Codyematike. Oila \u003d 'Ivanov' 12.1-misol. Ivanov sotib olingan tovarlarning ismlari va qiymatini olish tartibi.

Uchun protseduraga murojaat qilish Siz buyruqlardan foydalanishingiz mumkin:

My_proc1 yoki my_proc1

Jarayon ma'lumotlar to'plamini qaytaradi.

12.2-misol. Parametrlarsiz protsedura. Birinchi nav mahsulotining narxini 10 foizga kamaytirish tartibini yarating.

Uchun protseduraga murojaat qilish Siz buyruqlardan foydalanishingiz mumkin:

My_proc2 yoki my_proc2

Jarayon hech qanday ma'lumotlarni qaytarmaydi.

12.3 misol. Kirish parametrlari bilan tartib. Belgilangan mijoz sotib olgan tovarlarning ismlari va narxini olish tartibini yarating.

My My_Proc3-ni tanlang (20) Mahsulotni tanlang. Kompaniya, mijozlar * Mijozlar \u003d Transfer vositalari. Codclient \u003d Bitim. Codeclentient Mijoz.familiya [Elektron pochta bilan himoyalangan] 12.3 misol. Sarlavhalarni olish tartibi va belgilangan mijozni sotib olgan tovarlarning narxi.

Uchun protseduraga murojaat qilish Siz buyruqlardan foydalanishingiz mumkin:

IFF MY_PROC3 "Ivanov" yoki my_proc3 @ K \u003d "Ivanov"

12.4-misol. . Belgilangan%% ga muvofiq belgilangan mahsulot turining narxini kamaytirish tartibini yarating.

Uchun protseduraga murojaat qilish Siz buyruqlardan foydalanishingiz mumkin:

My_proc4 "Wafers", 0,05 yoki My_proc4 @ T \u003d "Wafers", @ p \u003d 0.05

12.5 misol. Kirish parametrlari bilan protsedura va odatiy qiymatlar. Belgilangan%% ga muvofiq belgilangan mahsulot turining narxini kamaytirish tartibini yarating.

PROC my_proc5 @t varich (20) \u003d 'Candy', @p Float \u003d 0,1 Yangi Narx * ( [Elektron pochta bilan himoyalangan]) Yaqinlar turi [Elektron pochta bilan himoyalangan] 12.5 misol. Kiritish parametrlari va standart qiymatlari bilan protsedura. Belgilangan%% ga muvofiq belgilangan mahsulot turining narxini kamaytirish tartibini yarating.

Uchun protseduraga murojaat qilish Siz buyruqlardan foydalanishingiz mumkin:

Ixtmed My_proc5 "Wafers", 0.05 yoki My_proc5 @ "My_proc5 yoki My_proc5 @ p \u003d 0.05

Bunday holda, shirinliklar narxi pasayadi (protsedura deb nomlangan va sukut bo'yicha qabul qilinganda tur turi ko'rsatilmaydi).

Ikkinchi holatda ikkala parametr (va foizlar) ko'rsatilmaydi, agar protsedura deb nomlangan bo'lsa, ularning qadriyatlari sukut bo'yicha olinadi.

12.6 misol. Kirish va chiqish parametrlari bilan protsedura. Ma'lum bir oy uchun sotiladigan tovarlarning umumiy narxini aniqlash tartibini yarating.

PROC my_proc6 @m int, @s. Narx * tranzaktsiyalarni tanlang. Mahsulotlar. Milliy (ma'lumot). Oylik (ma'lumotlar) ) [Elektron pochta bilan himoyalangan] 12.6 misol. Kirish va chiqish parametrlari bilan protsedura. Ma'lum bir oy uchun sotiladigan tovarlarning umumiy narxini aniqlash tartibini yarating.

Uchun protseduraga murojaat qilish Siz buyruqlardan foydalanishingiz mumkin:

Deklar @st suzuvchi my_proc6 1, @ stni tanlang

Ushbu buyruqlar blokida yanvar oyida sotiladigan tovarlarning narxini aniqlashga imkon beradi ( kirish parametrlari Oy 1 ga teng).

Belgilangan xodim tomonidan sotib olingan firma tomonidan sotib olingan tovarlarning umumiy sonini aniqlash tartibini yarating.

Birinchidan, biz xodimning ishlayotgan kompaniyani aniqlash tartibini ishlab chiqamiz.

12.7 misol. Ishlatish iJRADI MAHSULOTLARI. Belgilangan xodim tomonidan sotib olingan firma tomonidan sotib olingan tovarlarning umumiy sonini aniqlash tartibini yarating.

Keyin biz sizni qiziqtirgan kompaniya tomonidan sotib olingan tovarlarning umumiy sonini hisoblaydigan tartibni yaratamiz.

My My_proc8 (20) ni yarating, masalan, My_Proc7 @ Firce Chiqirce CHAY. @ firce chiqin @ firma chiqishi. CODCLIENTE \u003d Bitim .Codcastle guruhi mijoz tomonidan. Mijozga ega bo'lgan firma [Elektron pochta bilan himoyalangan] 12.7 misol. Ko'rsatilgan xodim tomonidan sotib olingan firma tomonidan sotib olingan tovarlarning umumiy sonini aniqlash tartibini yaratish.

Jarayon Qo'ng'iroqlar buyruq yordamida amalga oshiriladi:

@K IN My_proc8 'Ivanov', @ k) ni tanlang

Qachon saqlangan protseduralardan qachon foydalanishim kerak va SQL serveridagi nuqtalardan qachon foydalanishim kerak?

Ruxsatnomalar yaratishga imkon beradi dinamik so'rovlarParametrlarni qayerdan o'qiy olamiz?

Qaysi biri eng tezkor va u boshqalarga qaraganda qanday asosda?

Ko'rishlar yoki saqlangan protseduralar doimo xotirani saqlaydimi?

Agar kimdir qarashlar virtual jadval yaratilishini va protseduralar materiallar jadvali yaratishni anglatadimi degani nimani anglatadi?

Iltimos, agar ular bo'lsa, menga ko'proq ballar haqida xabar bering.

"Saqlangan protsedura va vakillik o'rtasidagi farq nima?"

Shakl vakili virtual Jadval. Siz taqdimotda bir nechta jadvallarga qo'shilishingiz va ma'lumotlarni yuborish uchun ma'lumotni yuborishingiz mumkin, go'yo bir jadvaldan kelgan.

Saqlangan protsedura funktsiyani bajarish uchun parametrlardan foydalanadi ... u yangilanish va ma'lumotlarni kiritish yoki individual qiymatlar yoki ma'lumotlar to'plamini qaytaradi.

Vakolatxonalar va saqlangan protseduralar - Microsoft-dan qachon va nima uchun foydalanishi haqida ba'zi ma'lumotlarni o'z ichiga oladi.

Aytaylik, ikkita stol bor:

tl_user ustunlari: .User_ID, .User_name, .User_pw

t il_profile ustunlari:

Shuning uchun, agar men ushbu jadvallardan iltimosimda bo'lsam ... Har bir pe tlyect-da ulanish o'rniga, men shaklni aniqlab, masalan:

VW_USER_Profile-ni tanlang. TBL_USER, B.User_ID-da TBL_Profile-ni tanlang

Shuning uchun, kelajakda, agar men profil_Desriptni talaba identifikatori orqali ... men uchun kerak bo'lgan narsa

VW_USER_Profile-dan profil_Dustrie_profile-dan tanlang

Ushbu kodni saqlangan protsedurada ishlatilishi mumkin, masalan:

Dbo.getddesc @ID-ni yarating, user_id_id_profile-dan profil_desriple-ni tanlang

Shunday qilib, men qo'ng'iroq qilishim mumkin

DBBetdesc 25.

va men foydalanuvchi identifikatoriga tavsif olaman, unda 25tasi sizning parametringiz.

Shubhasiz, ko'p narsa, lekin bu shunchaki asosiy fikr.

Avval siz ikkalasi ham har xil narsa ekanligini tushunishingiz kerak. Saqlangan protseduralar UNEGE -E-UNEGET-DELETE bayonlari uchun eng yaxshi ishlatiladi. Va topshirishlar bayonotlarni tanlash uchun ishlatiladi. Va ikkalasini ham ishlatishingiz kerak.

Ko'rishlarda siz ma'lumotlarni o'zgartira olmaysiz.

Ko'rishlar: Bu turli xil ma'lumotlar bazasi jadvallaridan bir yoki bir nechta satrlar va ustunlardan iborat virtual jadval. Bu bir nechta jadvallarning bir-biri va ustunlari. Siz bu erda istalgan parametrlarni o'tkaza olmaysiz.

Saqlangan protseduralar: ular oldindan bajarilgan SQL dasturlari to'plamidir, unda siz ma'lumotlarni kiritish va mahsulotni qabul qilishingiz mumkin bo'lgan parametrlarni yuborishingiz mumkin.

Taqdimotlar saqlanadigan protsedurada ishlatilishi mumkin, ammo saqlanadigan protsedura ko'rinishda foydalanilmaydi ...!

Saqlash tartibi qachon ishlatiladi oddiy SQL Shunchaki etarli emas. Saqlash protseduralarida o'zgaruvchilar, tsikllar va boshqa saqlanadigan protseduralarni talab qiladi. Bu so'rov tili emas, balki dasturlash tili.

    Taqdimotlar statik. Ularni ma'lum bir reja bilan o'ylab ko'ring va ulardagi ma'lumotlar siz yaratgan so'rovdan foydalanib "chivinda" yaratilgan. Har qanday SQL stolida bo'lgani kabi, siz uni qaerda va buyurtma bilan to'ldirishingiz va filtrlashingiz mumkin.

    Bu nima qilayotganingizga bog'liq.

    Bu ma'lumotlar bazasiga bog'liq. Oddiy ko'rinishi shunchaki so'rovni boshlang va natijani filtrlang. Ammo Oracle kabi ma'lumotlar bazalari sizga asosiy ma'lumotlar o'zgartirilsa, asosan avtomatik ravishda yangilanadigan stol mavjud.

    Ishlatilgan vakillik sizga taqdim etish ustunlarida indekslarni yaratishga imkon beradi (ayniqsa ma'lumotlar bazasida mavjud bo'lmagan hisoblangan ustunlarda).

    Siz nima haqida gapirayotganingizni tushunmayapman.

Asosiy farq shundaki, siz ko'rinishni talab qilganingizda, ushbu ta'rif sizning so'rovingizga kiritiladi. Ushbu protsedura so'rov natijalarini ham berishi mumkin, ammo u tuzilgan va juda tez. Yana bir variant - indekslangan ko'rinishlar.

SQL ko'rinishi - bu virtual jadval sQL so'rovi -Ni tanlang. Taqdimot bir yoki bir nechta mavjud ma'lumotlar bazasi yoki boshqa ko'rinishini anglatadi. Bu tezkor ma'lumotlar bazasi snapshot, saqlangan protsedura bitta ijro rejasida tuzilgan tranka-sql operatorlari guruhidir.

Ko'rish - ma'lumotlar bazasi jadvallarida saqlanadigan ma'lumotlarni oddiy namoyish etish, saqlanadigan protsedura - bu bajarilishi mumkin bo'lgan operatorlar guruhidir.

Taqdimot tezroq, chunki u Stol-ning saqlash tartibi SQL ko'rsatmalarini bajaradigan ma'lumotlarni ko'rsatadi.

Ushbu maqolani tekshiring: saqlangan protseduralarni ko'rish. Siz nimani qidirayotganingiz

@Patrrik u aytgan narsa bilan to'g'ri, lekin boshqa savollaringizga javob berish uchun, ko'rish o'zingizni xotiralarda yaratadi va har qanday yig'in turiga va biron bir yig'ish turiga qarab, bu juda och ko'rinishi bo'lishi mumkin.

Saqlangan protseduralar uning barcha qayta ishlashini amalga oshiradi yoki masalan, @ thtabble1 bilan # tmptle1 yoki xotiradan foydalanishni amalga oshiradi. Siz aytmoqchi bo'lgan narsaga qarab.

Saqlangan protsedura funktsiyaga o'xshash, ammo u to'g'ridan-to'g'ri nom deb nomlanadi. Aslida so'rovning o'zida ishlatilgan funktsiyalar o'rniga.

Shubhasiz, agar siz ko'p ma'lumotlarni ajratib qo'ymasangiz, shubhasiz, vaqt jadvalining ko'pi tezroq.

Taqdimotdagi ma'lumotlarni o'zgartira olmaganingizda pyure to'liq to'g'ri emas. Shunday qilib, patrik nuqtai nazaridan

VW_USER_Profile-ni tanlang.

Ma'lumotni yangilashim mumkin ... Misol sifatida men bulardan birini qila olaman ...

Yangilash vw_user_profile Conclotferente \u003d "menejer" user_id \u003d 4

Yangilash tl_pofile setentferent_desriction \u003d "menejer" user_id \u003d 4

Siz ushbu g'oyani kiritishingiz mumkin emas, chunki barcha maydonlar butun stolda mavjud emas va profil_id asosiy tugmachadir va "NULL bo'lmaydi" deb taxmin qilaman. Biroq, ba'zida siz taqdimotga qo'shishingiz mumkin ...

Men uchun g'oyani yaratdim mavjud jadvalFoydalanish ...

Tanlash uchun * ni tanlang

Junktsiya (kodi, ismi) qiymatlariga ("Glin", "Glin Roberts"), ("Maryam", "MiaNan Roberts")

Xunkdan ID\u003e 4

Va bu holatda ishlanganlarni almashtirish va o'chirish

Shubhasiz, siz yig'ilgan yoki hisoblangan hech qanday maydonlarni yangilay olmaysiz, ammo shunchaki to'g'ridan-to'g'ri vakillik yangilanishi kerak.

Agar ko'rinishda bir nechta stol mavjud bo'lsa, siz joylashtira olmaysiz yoki o'chira olmaysiz, agar nuqtai nazar bo'lsa, odatda siz odatda olasiz.

Yuqoridagi sharhlarga qo'shimcha ravishda, men qarashlar bo'yicha bir nechta sharhlar qo'shmoqchiman.

  1. Taqdimotlar murakkablikni yashirish uchun ishlatilishi mumkin. Tasavvur qiling-a, qaysi 5 kishi loyihada ishlashi mumkinligini tasavvur qiling, ammo ulardan bittasi murakkab uyushmalar kabi ma'lumotlar bazasi juda yaxshi. Bunday stsenariyda u biron bir stol talab qilganda, boshqa jamoa a'zolari tomonidan osongina so'rashi mumkin bo'lgan turlarni yaratishi mumkin.
  2. Xavfsizlikni osongina bajarish mumkin. Aytaylik xodim kabi sezgir ustunlarni o'z ichiga olgan jadvallar Ish haqi , sSN raqami . Ushbu ustunlar ularni ko'rishga ruxsat berilmagan foydalanuvchilar uchun ko'rsatilmasligi kerak. Bunday holda, biz stolda avtorizatsiya talab qilmaydigan ustunlarni tanlaydigan taqdimotni yaratamiz ism , yoshim I. va hokazo, zaif ustunlarni fosh qilmasdan (masalan, ish haqi va hokazo, biz ilgari aytib o'tganimiz haqida). Endi biz to'g'ridan-to'g'ri so'rov uchun stolga yuboramiz. Xodim. Va shunchaki taqdimotda o'qish uchun ruxsatni saqlang. Shunday qilib, biz qarashlardan foydalanib xavfsizlikni amalga oshirishimiz mumkin.

SQL saqlangan protseduralar turli ob'ektlarda saqlanishi mumkin bo'lgan dasturiy ta'minot moduli hisoblanadi. Boshqacha aytganda, bu SQL ko'rsatmalari mavjud bo'lgan ob'ekt. Ushbu saqlangan protseduralar olish uchun dastur dasturlari mijozida bajarilishi mumkin yaxshi ishlash. Bundan tashqari, bunday narsalar ko'pincha boshqa stsenariylardan yoki hatto boshqa qismlardan ham chaqiriladi.

Kirish

Ko'pchilik, ular turli xil tartiblarga o'xshash (mos ravishda MS SQL) faqat (mos ravishda). Ehtimol, bu haqiqat. Ular shunga o'xshash parametrlarga ega, ular shunga o'xshash qadriyatlarni keltirib chiqarishi mumkin. Bundan tashqari, ba'zi hollarda ular aloqa qilishadi. Masalan, ular DDL va DML ma'lumotlar bazasi, shuningdek foydalanuvchi funktsiyalari (kod nomi - UDF) bilan birlashtirilgan.

Aslida SQL saqlangan protseduralar mavjud keng spektr Ularni bunday jarayonlarda ajratish afzalliklari. Xavfsizlik, dasturlash o'zgaruvchanligi, samaradorligi - bularning barchasi ma'lumotlar bazalari bilan ishlaydigan foydalanuvchilarni ko'proq va undan ko'proq ko'proq jalb qiladi. Microsoft dasturi 2005-2010 yillarda ommaviy ravishda ochilish cho'qqisi, "SQL Server menejmenti studiyasi" dasturi nashr etildi. U bilan ma'lumotlar bazalari bilan ishlash osonroq bo'ldi, yanada amaliy va qulayroq. Yildan-yilga bu dasturchilarda mashhurlik bor edi. Bugungi kunda foydalanuvchilar uchun ma'lumotlar bazalari bilan "aloqa" ma'lumotlar bazalari bilan "Excel" bilan birlashgan tanish dasturdir.

Jarayonni chaqirib, uni bir zumda server tomonidan keraksiz jarayonlar va foydalanuvchi aralashuvisiz qayta ishlanadi. Shundan so'ng, siz biron bir olib tashlash, ijro etish, o'zgarishlarni amalga oshirishingiz mumkin. Bularning barchasi uchun DDL operatori tomonidan javob beradi, bu faqat ob'ektni qayta ishlashning eng murakkab samaralarini keltirib chiqaradi. Va bularning barchasi juda tez sodir bo'ladi va server aslida yuklanmaydi. Bunday tezlik va ishlash sizga foydalanuvchi tomonidan katta miqdordagi ma'lumotlarni serverga va aksincha tezda uzatishga imkon beradi.

Ushbu texnologiyani amalga oshirish uchun bir nechta dasturlash tillari mavjud. Bular, masalan, Oracle, PSQL-dan Interbas va Firebird tizimlarida, shuningdek klassik "Microsoft" Classic-SQL. Ularning barchasi yirik ma'lumotlar bazasi ishlov beruvchilariga o'z algoritmlaridan foydalanishga imkon beradigan saqlangan protseduralarni yaratishga mo'ljallangan va bajarishga mo'ljallangan. Bunday ma'lumotni boshqaradiganlar uchun barcha ob'ektlarni uchinchi tomonlarning shaxslarining ruxsatsiz kirishidan va tegishli ma'lumotlarni yaratish, o'zgartirish yoki o'chirish orqali himoya qilishlari mumkin.

Unumdorlik

Ushbu ma'lumotlar bazasi ob'ektlari turli yo'llar bilan dasturlashtirilgan bo'lishi mumkin. Bu foydalanuvchilarga foydalanilgan usul turini tanlash imkoniyatini beradi, bu eng mos keladigan, bu kuch va vaqtni tejaydi. Bundan tashqari, protsedura server va foydalanuvchi o'rtasida juda ko'p vaqtincha birjaning narxini oldini oladi. Shuningdek, modul qayta dasturlashtirilishi va kerakli yo'nalishga o'zgartirilishi mumkin. SQL saqlangan protsedura boshlanganligi, ayniqsa, SQL saqlanadigan protsedura boshlanganligi haqida: bu jarayon unga o'xshash va universal qiladigan boshqalarga qaraganda tezroq sodir bo'ladi.

Xavfsizlik

Axborotni qayta ishlashning ushbu turi shunga o'xshash jarayonlardan farq qiladi, bu xavfsizlikning oshishi yanada kengayadi. Bu boshqa foydalanuvchilarning protseduralariga kirish imkoniyati yo'q qilinishi mumkinligi sababli ta'minlanadi. Bu ma'murga ma'lumotlar bazasiga ma'lumot berishdan yoki ruxsatsiz kirishdan qo'rqmasdan ular bilan mustaqil ravishda operatsiyalarni amalga oshiradi.

Ma'lumot uzatish

SQL-SKLda saqlanadigan protsedura va mijozlarga buyurtmalar parametrlardan foydalanish va qaytarilgan qiymatlardan foydalanishdir. Ikkinchisiga saqlangan protseduradagi ma'lumotlarga o'tkazilishi mumkin emas, ammo ushbu ma'lumot (asosan foydalanuvchi so'rovi bo'yicha) va SQL uchun qayta ishlangan. Saqlangan protsedura o'z ishini tugatgandan so'ng, u ma'lumot paketlarini orqaga qaytaradi (lekin yana, agar kerak bo'lsa, uni ishlatishga sabab bo'lgan bo'lsa) yuboradi turli xil usullarU bilan SQL saqlanadigan protsedura va to'lovni qaytarish, masalan:

Chiqish tipidagi parametridan foydalanib ma'lumot uzatish;

Qayta tiklash operatori yordamida ma'lumot uzatish;

Selektsiya operatoridan foydalanib ma'lumot uzatish.

Va endi biz ushbu jarayonning ichkaridan qanday ko'rinishini aniqlaymiz.

1. SQL-da bajarilgan tartibda saqlanadigan protsedura yaratish

SQL MS (boshqaruv studiyasi) da tartibni tuzishingiz mumkin. Jarayon yaratilgandan so'ng, u amalga oshiriladigan rejim operatori tomonidan amalga oshiriladigan dasturlashtirilgan ma'lumotlar bazasi tuguniga kiritiladi. Saqlangan SQL protseduralarini bajarish uchun ob'ektning nomini o'z ichiga olgan bajarilgan jarayondan foydalaning.

Jarayonni yaratishda uning nomi birinchi bo'lib paydo bo'ladi, shundan keyin bir yoki bir nechta parametrlar tayinlanadi. Parametrlar majburiy bo'lishi mumkin. Parametr (lar) dan keyin, ya'ni protsedura organi yoziladi, siz ba'zi zarur operatsiyalarni amalga oshirishingiz kerak.

Gap shundaki, tana unda joylashgan mahalliy o'zgaruvchilar bo'lishi mumkin va bu o'zgaruvchilar mahalliy va protseduralarga nisbatan. Boshqacha qilib aytganda, ularni faqat protsedura organida ko'rib chiqish mumkin. Microsoft SQL. Server. Bu holda saqlangan protseduralar mahalliy hisoblanadi.

Shunday qilib, protsedurani yaratish uchun bizga protsedura va kamida bitta parametrni protseduraning tanasi sifatida ko'rsatilishi kerak. E'tibor bering, bu holatda yaxshi variantni klassifikatordagi sxema nomi bilan yaratish va bajarishdir.

Jarayonning tanasi har qanday namunaga ega bo'lishi mumkin, masalan, stol yaratish, bir yoki bir nechta satrlarni joylashtiring, ma'lumotlar bazasining turini va xususiyatini o'rnating va hokazo. Shunga qaramay, protsedura organi unda ba'zi operatsiyalar bajarilishini cheklaydi. Ba'zi muhim cheklovlar quyida keltirilgan:

Tana boshqa saqlanadigan protseduralarni yaratmasligi kerak;

Tana ob'ektni noto'g'ri tushuncha yaratmasligi kerak;

Tana hech qanday tajovitlarni yaratmasligi kerak.

2. O'zgaruvchini protsedura organiga o'rnatish

Siz tana tartibida mahalliy o'zgaruvchilar qilishingiz mumkin, keyin ular faqat protseduraning tanasida bo'ladi. Yaxshi amaliyot - bu saqlanadigan protsedura boshida o'zgaruvchini yaratish. Ammo siz ushbu ob'ektning tanasida istalgan joyda belgini o'rnatishingiz mumkin.

Ba'zan siz bir nechta o'zgaruvchini bir qatorda o'rnatilganini ko'rishingiz mumkin va har bir o'zgaruvchan parametr vergul bilan ajratilgan. Shuni ham ta'kidlashicha, o'zgaruvchining prefiks mavjud. Jarayon tanasida siz xohlagan o'zgaruvchini belgilashingiz mumkin. Masalan, o'zgaruvchi @ nomi1 protseduraning tanasi oxiriga yaqinlashishi mumkin. E'lon qilingan o'zgaruvchining qiymatini berish uchun shaxsiy ma'lumotlar to'plami qo'llaniladi. Bir qatorda bir nechta o'zgaruvchan deb e'lon qilingan vaziyatdan farqli o'laroq, bunday vaziyatda faqat bitta shaxsiy ma'lumotlar to'plami qo'llaniladi.

Ko'pincha, foydalanuvchilar savol berishadi: "Jarayon tanasida bitta operatorda bir nechta qiymatlarni qanday berish kerak?" Xo'sh. Savol qiziq, lekin siz o'ylagan narsani qilish juda oson. Javob: "Var \u003d qiymatini tanlang." Siz vrachini ajratib, siz ushbu juftlikdan foydalanishingiz mumkin.

Odamlar turli xil misollar bilan, odamlar oddiy saqlanadigan protsedurani yaratishni va uni bajarishni ko'rsatmoqda. Biroq, protsedura jarayonni keltirib chiqaradigan qiymatlar unga yaqin bo'lgan qadriyatlarga ega bo'ladi (lekin har doim ham emas). Agar ular mos kelsa, tegishli jarayonlar tanada boshlanadi. Masalan, agar siz shaharni va viloyatni qo'ng'iroq qiluvchidan olib chiqadigan va qancha mualliflar, qancha mualliflar tegishli shahar va mintaqaga tegishli ma'lumotni qaytarsangiz. Ushbu protsedura ma'lumotlar bazasi mualliflarining jadvalini, masalan, pablar, mualliflarning ushbu hisoblamasini bajarish uchun talab qiladi. Masalan, ushbu ma'lumotlar bazalarini olish uchun Google SQL005 sahifadagi SQL ssenariysini yuklaydi.

Oldingi misolda protsedura ikkita parametrni oladi ingliz tili Shartli ravishda @STate va @city deb nomlanadi. Ma'lumotlar turi ilovada belgilangan turga to'g'ri keladi. Jarayonning organi ichki o'zgaruvchilar @totaliatorlar (jami mualliflar) va bu o'zgaruvchi ularning miqdorini ko'rsatish uchun ishlatiladi. Quyidagi tanlov bo'limi hamma narsani hisoblaydi. Va nihoyat, hisoblangan qiymat Chop etish bayonnomasidan foydalangan holda chiqish oynasida ko'rsatiladi.

SQL-da saqlanadigan protsedura qanday bajariladi

Jarayonni bajarishning ikkita usuli mavjud. Birinchi yo'l parametrlarni o'tkazishni ko'rsatadi, chunki vergul tomonidan ajratilgan ro'yxat protsedura nomi bilan amalga oshiriladi. Aytaylik, ikkita qiymatga egamiz (oldingi misolda). Ushbu qiymatlar yordamida to'planadi o'zgaruvchan parametrlar Protseduralar @STate va @city. Ushbu usulda parametrlarni uzatish usulida buyurtma muhimdir. Ushbu usul dalillarni oddiy uzatish deb ataladi. Ikkinchi usulda parametrlar allaqachon tayinlangan va bu holda buyurtma muhim emas. Ushbu ikkinchi usul, ko'rsatilgan dalillarni topshirish deb nomlanadi.

Jarayon bir oz tipik tarzda o'chirilishi mumkin. Oldingi misolda bo'lgani kabi, faqat bu erda parametrlar o'zgaradi. Ya'ni, parametr @cite avval saqlanadi va @STate standart qiymat yonida saqlanadi. Odatiy parametr odatda alohida ajratiladi. SQL saqlangan protseduralar shunchaki parametrlarni chiqaradi. Bunday holda, agar UT parametr "Ca" ni almashtirilishi mumkin. Ikkinchi ijroda @city parametr pasiatsiyalari uchun faqat bitta qiymat va @state parametri standart "CA" ni oladi. Tajribali dasturchilar standart bo'yicha barcha o'zgaruvchilar parametrlar ro'yxatining oxiriga yaqinroq ekanligiga maslahat berishadi. Aks holda, qatl qilinishi mumkin emas, so'ngra siz uzoqroq va qiyinroq bo'lgan dalillarni topshirish bilan ishlashingiz kerak.

4. SQL Server protseduralari: Qaytish usullari

Saqlangan protsedurada ma'lumotlarni yuborishning uchta muhim usuli mavjud. Ular quyida keltirilgan:

Saqlangan protsedura qiymatini qaytaring;

Saqlangan protseduralar ishlab chiqarish;

Saqlangan protseduralardan birini tanlash.

4.1 SQL saqlanadigan protsedura qiymatlari

Ushbu usulda protsedura mahalliy o'zgaruvchining qiymatini belgilaydi va uni qaytaradi. Ushbu protsedura doimiy qiymatni to'g'ridan-to'g'ri qaytarishi mumkin. Keyingi misolda, biz qaytaradigan protsedurani yaratdik umumiy raqam Mualliflar. Agar siz ushbu protsedurani avvalgilar bilan taqqoslasangiz, bosma qiymati aksi bilan almashtirilishini ko'rishingiz mumkin.

Endi protsedurani qanday bajarishni va unga qaytarilgan qiymatni ko'rsatishni ko'rib chiqaylik. Jarayonning bajarilishi butun jarayondan keyin amalga oshiriladigan o'zgaruvchan va bosib chiqarish yo'lni yaratishni talab qiladi. Shuni esda tutingki, siz bosib chiqarish bayonotining o'rniga, siz tanlashdagi operatordan foydalanishingiz mumkin, masalan, @Nruffue, shuningdek chiqish qarzdorlik-ni tanlang.

4.2 SQL Saqlangan tartib parametrlari

Oldingi misolda ko'rgan bitta o'zgaruvchini qaytarish uchun javob qiymatidan foydalanish mumkin. Chiqish parametridan foydalanish protseduraga qo'ng'iroq qiluvchiga bir yoki bir nechta o'zgaruvchan qiymatlarni yuborish imkonini beradi. Chiqarish parametri protsedurani yaratishda ushbu kalit "chiqish" so'zi bilan ko'rsatilgan. Agar parametr ishlab chiqarish parametri sifatida ko'rsatilgan bo'lsa, protseduraning ob'ekti unga qiymatni belgilashi kerak. SQL saqlangan protseduralar, misollar quyida ko'rish mumkin bo'lgan misollar, bu holda yakuniy ma'lumotlar bilan qaytariladi.

Bizning misolda ikkita chiqish nomlari bo'ladi: @Totation va @totalnocontract. Ular parametrlar ro'yxatida ko'rsatilgan. Ushbu o'zgaruvchilar protseduraning tanasida qiymatlarni belgilaydi. Chiqish parametrlaridan foydalansak, qo'ng'iroq qiluvchi protseduraning tanasida belgilangan qiymatni ko'ra oladi.

Bundan tashqari, avvalgi stsenariyda, MS SQL serverini ishlab chiqarish parametrida saqlanadigan qiymatlarni o'rnatgan qiymatlarni ko'radi. Keyin protsedura "CA" parametrining normal qiymatini taqdim etish orqali amalga oshiriladi. Quyidagi parametrlar Ular chiqmoqda va shuning uchun e'lon qilingan o'zgaruvchilar belgilangan tartibda uzatiladi. Iltimos, o'zgaruvchilar, chiqishda, chiqish paytida kalit so'z Shuningdek, bu erda o'rnatiladi. Jarayon muvaffaqiyatli bo'lganidan keyin, chiqish parametrlari tomonidan qaytarilgan qiymatlar oynada ko'rsatiladi.

4.3 SQL saqlangan protseduralar

Ushbu usul, ma'lumotlar jadvali sifatida qiymatlar jadvalini (yozib olish) keltirilgan tartibda qaytarish uchun ishlatiladi. Bunda misol SQL Parametrlar bilan saqlangan protsedura @Authid parametridan foydalanib, qaytarilgan yozuvlarni filtrlash orqali "Mualliflar" jadvalini talab qiladi. Tanlash bosqichi qo'ng'iroqni saqlangan protseduraga qaytarilishi kerakligini hal qiladi. Saqlangan protsedurani bajarishda, Muallif orqaga yuboriladi. Bu erda bunday tartibda har doim bitta yozuvni yoki har qanday narsani qaytaradi. Ammo saqlangan protsedura bir nechta rekordni qaytarishda hech qanday cheklovlarga ega emas. Ko'pincha siz tanlangan parametrlardan foydalanib, hisoblangan o'zgaruvchilar ishtirokida tanlangan parametrlar bir nechta natijalarni berish orqali yuzaga keladi.

Nihoyat

Saqlangan protsedura juda jiddiy dastur moduliQayta ishlash yoki uzatish, shuningdek mijozlarga nisbatan qo'llanilishi sababli zarur o'zgaruvchini yaratish. Saqlangan protsedura serverda, server va mijozlarga ariza berish (ba'zi hisob-kitoblar uchun) ko'p jihatdan ma'lumotlar almashinuvi bekor qilinishi mumkin. Bu sizga yukni kamaytirishga imkon beradi sQL ServerBu, albatta, egalarining qo'liga boradi. Kubiklardan biri T kvl protseduralari saqlanmoqda, ammo ularda ta'sirchan ma'lumotlar bazalarini yaratish bilan shug'ullanganlar uchun o'qish kerak. Saqlangan protseduralarni o'rganishda foydali bo'lishi mumkin bo'lgan katta, hatto juda katta nuanslar mavjud, ammo dasturlashda, shu jumladan professional ravishda mahkam shug'ullanishni rejalashtirayotganlar uchun ko'proq narsa bor.