Запазване на процедури в SQL. Vidalennya процедури, които се предприемат. Връщане на връзка към процедурите, които са запазени

Ако има следните процедури, които трябва да бъдат запазени, и ако съм виновен за победа на изявление в SQL Server?

Позволете ми да създавате динамични напитки, как можем да подобрим параметрите?

Кое от тях е най-видимо и кое е най-доброто и кое е най-малко?

Прегледайте или процедурите, които се записват, спестяват ли постоянно памет?

Какво означава, да кажем, че изразите създават виртуална таблица, а процедурите - таблица с материали?

Бъди любезен, кажи ми за точките, якчо смърди.

Събиране на решения от мрежата на "Защо има разлика между процедури, спестявания и данъци?"

Вижте є виртуаленмаса. Можете да стигнете до броя на таблиците в подаването и да спечелите заявлението за подаване на данни, тъй като данните са открити в една таблица.

Процедурата за избор на параметрите за избраната функция е запазена... за да се актуализира вмъкването на данни или ротацията на другите стойности или набора от данни.

Създадени известия и процедури, които се запазват - за да отмъстят за информацията от Microsoft за тези, ако и защо ги спечелите.

Да кажем, че имам две таблици:

tbl_user Стовпци: .user_id, .user_name, .user_pw

tbl_profile Stowpci: .profile_id, .user_id .profile_description

Така че, тъй като се опитвам да извлека тези таблици МНОГО ... вместо това, за да работя в CLEAR peice sql, бих използвал поглед, например:

СЪЗДАВАНЕ Преглед на vw_user_profile AS Изберете A.user_id, B.profile_description ОТ tbl_user A наляво присъединете tbl_profile B на A.user_id = b.user_id GO

Ето защо в бъдеще искам да поискам profile_description за идентификатора на koristuvach ... всичко, което трябва да ограбя,

ИЗБЕРЕТЕ описание на профил ОТ vw_user_profile WHERE user_id = @ID

Този код може да бъде променен в процедурата, която се записва, например:

Създайте процедура dbo.getDesc @ID int AS begin SELECT profile_description FROM vw_user_profile WHERE user_id = @ID END GO

За това мога да се обадя

Dbo.getDesc 25

и премахвам описанието за ID на koristuvach 25 de 25 - вашият параметър.

Очевидно е, че BAGATO е повече, но основната идея е по-малко.

На гърба трябва да разберете, че обидите са различни речи. Спестяванията на процедурите са по-победни за операторите INSERT-UPDATE-DELETE. Тези изявления са оправдани за SELECT изявления. и си виновен за победоносно негодувание.

Не можете да променяте данните в изгледите.

Обърнете внимание: Това е виртуална таблица, която е съставена от един или повече редове и колони от различни реални таблици с база данни. Tse шаблон rowk_v и stovpts_v k_lkoh таблица. Тук не можете да предавате никакви параметри.

Процедури за запис: използвайте набор от SQL оператори предварително, за които можете да редактирате параметри като входни данни и да премахвате изходни данни.

Появи могат да бъдат представени в процедура, която е запазена, но процедура, която е запазена, не може да бъде представена в Views...!

Процедурата shovischa е победоносна, ако обикновеният SQL просто не е достатъчен. Процедурите за запис трябва да се променят, циклите и циклите на други процедури, които се записват. Tse mova програмиране, а не mova zapitіv.

    Външностите са статични. Мислете за тях, сякаш са нови таблици с просто оформление, а данните в тях се създават по прищявка, с намесна нотка, с която сте създали всичко. Както във всяка SQL таблица, можете да сортирате и филтрирате по WHERE, GROUP BY и ORDER BY.

    Tse да оставим настрана факта, че работите.

    Tse да лежи в базата на данни. Съжаляваме, просто стартирайте заявката и филтрирайте резултата. И все пак, базите данни, като Oracle, ви позволяват да създавате "материализирани" изрази, като в основната таблица, тъй като те се актуализират автоматично, когато промените основния тип данни.

    Материализирането на изявлението ви позволява да създавате индекси в колоните на изявлението (особено върху изчислените колони, които не се намират никъде в базата данни).

    не разбирам какво казваш.

Основната разлика се състои във факта, че ако поискате изявление, обозначението се вмъква във вашата заявка. Процедурата може да даде резултати, но е компилирана и толкова бърза. Вторият вариант е да индексирате известието.

SQL View е виртуална таблица, базирана на SQL заявката SELECT. Заявленията се подават за една или повече таблици от база данни или за други приложения. Този митен знак на базата данни, точно като процедурата, която е предприета, е група от Transact-SQL оператори, сгънати в единен план за изпълнение.

Pereglyad е проста демонстрация на данни, които се записват в таблици на база данни, точно като процедура, която се записва от група оператори, които могат да бъдат виконирани.

Подадени повече, oscillki vodobrazhae данни от таблицата, за това как да попитам, точно като процедурата за събиране на sql-инструкции.

Обърнете тази статия: Преглед на процедурите, които се записват. Точно тези, които шепнеш

@Patrick е прав, когато казваш, добре, ако имаш нужда от помощ с другата си храна, създайте изглед за себе си в паметта, а в успоредния тип Joins, Data и дори ако агрегацията ще бъде нарушена, все пак можете да търсите гладен.

Запазете процедурата, за да запазите цялата си работа или със заместванията на Temp Hash Table, например #tmpTable1, или в паметта на @tmpTable1 за помощ. Zalezhno v_d на това, което искате да кажете.

Процедурата, която се предприема, е подобна на функция, но се извиква с директни имена. zamіst funktsіy, yakі всъщност vikoristovuyutsya в средата на заявката.

Очевидно през повечето време таблиците са в паметта, защото не взимате много пари.

Махеш не е прав, ако разреши вино, не можеш да промениш почитта от почитта. Татко, погледни Патрик

СЪЗДАВАНЕ Преглед на vw_user_profile AS Изберете A.user_id, B.profile_description ОТ tbl_user A ляво присъединяване към tbl_profile B на A.user_id = b.user_id

Мога да актуализирам данни ... като дупе, мога да разбера дали е cich ...

Актуализация vw_user_profile Задайте profile_description="Мениджър", където user_id=4

Актуализиране на tbl_profile Задайте profile_description="Manager", където user_id=4

Не можете да го вмъкнете в декларацията, тъй като не присъстват всички полета в цялата таблица и предполагам, че PROFILE_ID е първичният ключ и не може да бъде NULL. Въпреки това, можете също да вмъкнете INSERT във vistavu ...

Създадох приложение за основната маса, використ ...

Създаване на нежелана изглед като SELECT * изглед

Вмъкнете в нежелани (код, име) стойности ("glyn","Glyn Roberts"), ("Mary","Maryann Roberts")

ИЗТРИВАНЕ от боклук Където ID>4

І INSERT, і DELETE работиха в същата точка

Очевидно не можете да промените дали полетата са, дали са агрегирани, или дали са защитени, или дали са изрази, ако са просто директни изрази, те могат да бъдат променени.

Ако сте видели повече от една таблица, не можете да вмъкнете или видите, но ако сте видели повече от една таблица, можете да звучите.

В допълнение към посочването на още коментари, бих искал да добавя малко уважение към Views.

  1. Подаръците могат да бъдат победни за prikhovuvannya сгъване. Покажете свой собствен сценарий, в който 5 души работят по проекта и само един от тях вече е екип с база данни, например сгъваеми асоциации. При такъв сценарий могат да се създават вина, които могат лесно да бъдат заявени от други членове на екипа, а смърдящи парчета да заявят една маса.
  2. Сигурността може лесно да се внедри Views. Да кажем, че ние spіvrobіtnikмаси Заплата , SSN номер. Гражданите не са виновни, че търсят користувачите, които нямат право да ги гледат. По този начин можем да създадем известие, като избиране на колоните в таблицата, като неупълномощаващи, като напр. аз съм , вик таи т.н., без да даваме противоречиви забележки (например за заплата и т.н. за това как ни се досещаха по-рано). Сега можем да видим разрешено за директна заявка към таблици служители просто го запазете за четене от темата. По този начин можем да реализираме сигурност за Help Views.

Гласова процедура

СЪЗДАЙТЕ ПРОЦЕДУРА [({IN|OUT|INOUT} [,…])]
[НАБОР ЗА ДИНАМИЧНИ РЕЗУЛТАТИ ]
ЗАПОЧНЕТЕ [АТОМЕН]

КРАЙ

Ключови думи
. IN (Input) – входен параметър
. OUT (Изход) – изходен параметър
. INOUT - вход и изход, както и поле (без параметри)
. DYNAMIC RESULT SET Показва, че процедурата може да определи броя на курсорите, така че процедурата да може да бъде затворена след връщане на процедурата.

Бележки
Не се препоръчва да се променят много параметри в процедурите, които се записват (например пред големи числа и низове от знаци) чрез преразглеждане на стека. На практика основните диалекти на Transact-SQL, PL/SQL и Informix поддържат съгласуваност със стандарта, както с озвучените и различни параметри, озвучените промени и потребителския интерфейс. Microsoft препоръчва да спрете следващото приближение, за да оцените размера на кеша на запаметените процедури:
\u003d (максимален брой едночасови работещи coristuvachiv) * (експеримент на най-големия план на присъствие) * 1.25. В зависимост от плана, страните могат да бъдат разширени с помощта на командата: DBCC MEMUSAGE.

Viklik процедури

За богати СУБД списъкът с процедури, които се записват, се използва за съдействие на оператора:

ИЗПЪЛНИТЕ ПРОЦЕДУРА [(][)]

Забележка: Процедурите за бързо записване могат да бъдат записани с програми, други процедури, които могат да бъдат запазени, или в интерактивен режим.

Пример за процедура на глас

CREATE PROCEDURE Proc1 AS // зашеметяване на процедурата
DECLARE Cur1 200 // зашеметяване на курсора
OPEN Cur1 // отваряне на курсора
FETCH NEXT FROM Cur1 //четене на данни от курсора
WHILE @@Fetch_Status=0
ЗАПОЧНЕТЕ
ИЗВЛЕКАНЕ СЛЕДВАЩО ОТ Cur1
КРАЙ
CLOSE Cur1 // затваряне на курсора
ОТМЕНИ Cur1
EXECUTE Proc1 // стартиране на процедурата

Полиморфизъм
В една и съща схема могат да се създадат две подпрограми с едно и също име, тъй като параметрите на тези две подпрограми са в такъв свят един тип от една, така че да могат да бъдат разделени. За да се разграничат две подпрограми с еднакви имена в една схема, на кожата им се дава алтернативно и уникално име (специфично име). Такива im'ya могат да бъдат назначени, ако се разработва подпрограма. При извикване на подпрограма за наличието на редица от същите имена, обозначаването на необходимите подпрограми се таксува за малко време:
. По-често всички процедури се присвояват от присвоени имена, а ако няма такива, тогава всички функции от дадени имена.
. За по-задълбочен анализ, тези подпрограми са изоставени, стотици такива данни могат да бъдат привилегировани за vikonannya (EXECUTE).
. Те избират ти, yakі mayut броя на parametrіv в vіdpodіdaє брой аргументи vikliku. Преглеждат се назначените типове данни и параметри на тези позиции.
. Ако е загубена повече от една подпрограма, се избира тази с най-кратка квалификация.
В практиката на Oracle полиморфизмът е разрешен за функции, които са изложени само в пакети, [защитен с имейл]- В други схеми, както и в Sybase и MS SQL Server, фокусът е блокиран.

Vidalennya и промяна на процедурите
За отдалечената процедура се използва операторът:

За промяна на процедурата се избира операторът:

ПРОМЕНИ ПРОЦЕДУРА [([{IN|OUT|INOUT}])]
ЗАПОЧНЕТЕ [АТОМЕН]

КРАЙ

Привилегии на процедурите vikonannya

GRANT EXECUTE ON ДА СЕ |ОБЩЕСТВЕН [С ОПЦИЯ ЗА БЕЗПЛАТА]

Системни процедури
Богата СУБД (включително SQL Server) може да има същия набор от системни процедури, така че можете да го настроите за свои собствени цели.

Процедури за запазване

Предметът на тази дистрибуция е един от най-важните инструменти, въведени на търговците на дребно чрез добавки на InterBase бази данни за внедряване на бизнес логика. и промяна на количеството код, необходим за настройка на задачи Практически е невъзможно да се завърши програма за база данни без промяна на процедурите, които се записват.
Въпреки че има много широко използвани процедури, от които да избирате, които са важни за повечето релационни СУБД, процедурите InterBase могат да играят ролята на практически пълни набори от данни, позволявайки им да въртят резултати в специфични SQL заявки.
Rosobniks, натискайки често, изучавайки процедурите за soberezhenia, просто yak nabir на специфичен sql-zapitiv, yaki shit усърдно усърден, и prazuvati, nabhagato, nibalizuvati високо ниво.
И така, какви са процедурите, които се съхраняват в InterBase?
Процедурата, която се записва (CP) е част от метаданните на базата данни, която се компилира от вътрешната приложна подпрограма InterBase, написана на специален език, компилаторът, който се вмъква в ядрото на сървъра InteiBase
Записването на процедура може да бъде извикано от клиентски програми, от тригери и други процедури, които се записват. Процедурата се записва в средата на сървърния процес и можете да манипулирате данните в базата данни, както и да обърнете клиента, за да щракнете (тези тригери, HP, допълнение) върху резултатите от вашата печалба
В основата на твърдите възможности, заложени от HP, е програмирането на процедурен език, което може да се извършва в собствен склад, като например промяна на предложенията на страхотен SQL, като INSERT, UPDATE и SELECT, както и организацията на анализа и цикли (IF, WHILE), както и неизправни ситуации Процедурите на Mova, които се запазват, позволяват внедряването на сгъваеми алгоритми за работа с данни, а фокусът върху работата с релационни данни на HP е значително по-компактен за подобни процедури с традиционен език .
Трябва да се отбележи, че спусъкът е побеждаващ със същото програмиране, престъпността е с ниски характеристики и граница. Vіdmіnnostі pіdmіnnostі pіdnіzhini movi, scho vikoristovuєєtsya в trigery, vіd mivi KHP, според съобщенията, прегледани в раздела "Trigeri" (част 1).

Пример за проста процедура, която се запазва

Дойде часът за създаване на първата процедура, която се записва, а на нейното дупе, процесът на създаване на запазващи процедури. Ale за началото на следващия да кажа няколко думи за тези, как да се упражняваме с процедурите, които са запазени. Документацията на InterBase препоръчва създаване на процедури за допълнителни файлове в SQL скриптове, които ще изчистят текста на HP, тъй като те се подават на входа на isql интерпретатора, и по този начин да създадете тази модификация на HP в този SQL скрипт на етапът на компилиране на BLR в текста на процедурата BLR (за текста на процедурата BLR виж Rozdіl "Структура на базите данни InterBase" (част 4)) winkle извинете, тогава isql ще ви покаже за това, на кой ред от SQL скрипт файла winkla tsya извинете. Поправете извинението и повторете всичко отзад. Относно нагодяването в ежедневното разбиране на думата, т.е. за трасуването на виконването, с възможността да се удивлявате на променящите се значения на промяната, не можете да излезете от пътя си. Очевидно е, че такъв pidhid не съответства на увеличаването на неприемливостта на процедурите, които се запазват в очите на търговеца на дребно.
Prote, крем на стандартния минималистичен подход към разработката на HP<_\ществ\ют также инструменты сторонних разработчиков, которые делают работу с хранимыми процедурами весьма удобной Большинство универсальных продуктов для работы с InterBase, перечисленных в приложении "Инструменты администратора и разработчика InterBase", предоставляют удобный инструментарий для работы с ХП. Мы рекомендуем обязательно воспользоваться одним из этих инструментов для работы с хранимыми процедурами и изложение материала будем вести в предположении, что у вас имеется удобный GUI-инструмент, избавляющий от написания традиционных SQL-скриптов
Синтаксисът на запаметените процедури се описва от следващата стъпка:

CREATE PROCEDURE име
[(параметр тип данни [, параметър тип данни...])]
)]
КАТО
;
< procedure_body> = []
< block>
< vanable_declaration_list> =
DECLARE VARIABLE var тип данни;

=
ЗАПОЧНЕТЕ
< compound_statement>
[< compound_statement> ...]
КРАЙ
< compound_statement> = (изявление ;)

Привидно дозата е голяма и може да бъде тромава, но всъщност всичко е още по-просто.
Отново оста на дупето е проста процедура, която се приема, тъй като приема две числа като вход, събирайки ги и обръщайки резултата:

CREATE PROCEDURE SP_Add(first_arg ДВОЙНА ТОЧНОСТ,
second_arg ДВОЙНА ТОЧНОСТ)
ВРЪЩАНЕ (резултат ДВОЙНА ТОЧНОСТ)
КАТО
ЗАПОЧНЕТЕ
Резултат=първи_арг+втори_арг;
ПРЕКРАНЕ;
КРАЙ

Е, всичко е просто: след командата CREATE PROCEDURE се посочва името на новосъздадената процедура (която може да е уникална в границите на базата данни) - за това SP_Add капка, след това за рамената, през които се въвеждат параметрите на Типът HP се нулират - first_arg и second_arg - от присвоените стойности.
Списъкът с входни параметри в неезиковата част на оператора CREATE PROCEDURE - пропуска се, ако всички данни за неговата работна процедура се вземат за допълнително въвеждане в таблицата в средата на тялото на процедурата.

В процедурите, които се записват, има скаларни типове данни InteiBase

Дайте ключовата дума RETURNS, след което параметрите се пренареждат в рамена, които се въртят според зададените типове - в тази категория само един - Резултат.
Как процедурата не е виновна за ротация на параметрите, думата RETURNS и списъка с параметри, които трябва да се въртят, ежедневно.
След като беше посочена ключовата дума RETURNSQ AS. Преди ключовата дума AS заглавие,а след нов - techoпроцедури.
Тялото на процедурата, което се взема, е копие на описанията на вътрешни (локални) промени (като смърди, ще го разгледаме по-долу), които са разделени на точка след кома (;) и блок на оператори, места в операторната дъга НАЧАЛО КРАЙ. В този случай тялото на HP е още по-просто - молим ви да добавите два входни аргумента и да прикачите резултата към изходния, след което да извикате командата SUSPEND. Trohi pіznіshe roz' е ясна същността на командата diї tsієї, но за момента е важно, че тя е необходима за предаването на параметри, които се обръщат там, звездите на bula viklikan спасиха процедурата.

Вариации в процедурите, които се запазват

Уважавайте, че операторът в средата на процедурата ще завърши с петно ​​с кома (;). Очевидно точката, с която стандартният дистрибутор на SQL команди излиза, е сигнал към SQL интерпретатора, че текстът на въвеждащата команда е правилен и трябва да бъде обработен. Chi не виждам така, scho, показвайки петънце с кома в средата на HP, SQL интерпретаторът разпознава, че командата е въведена точно и се опитва да vikonat част от процедурата, какво се взема? Tse pripuschennya не maє sensu. Например, ако създадете файл, в който да напишете насоки повече от пример, добавете командата за стартиране от базата данни и опитате SQL скрипта за помощ на isql интерпретатора, тогава извинението ще бъде обърнато, ще се превърне да бъде непоследователно, по мисълта на интерпретатора, края на командата създаването на процедури, които се предприемат. За да създадете процедури за запазване на допълнителни SQL скриптови файлове, без да използвате специални инструменти на търговеца на InterBase, е необходимо преди командата skin за създаване на HP (същото важи и за тригерите) да вдъхнови йога. Командата isql, която променя разделителя на SQL предложения, изглежда така:

ЗАДАДЕТЕ СРОК

За типичен начин за създаване на процедура, това, за което се грижи, изглежда така:

ЗАДАДЕТЕ СРОК ^;
CREATE PROCEDURE някаква_процедура
... . .
КРАЙ
^
ЗАДАДЕТЕ СРОК ;^

Седмични спестяващи процедури

Нека се обърнем към нашата процедура, за какво да се погрижим. Сега, ако е създаден, се изисква да се извика, да предаде параметрите и да вземе резултатите, които се въртят. Още по-лесно е да направите това - достатъчно е да напишете SQL заявка за обиден вид:

ИЗБЕРЕТЕ *
ОТ Sp_add (181.35, 23.09)

Tsei ни моли да обърнем един ред към нас, което ще отнеме само едно поле за резултат, в което сумата от числа 181.35 и 23.09, след това 204.44 ще бъде променена.
По този начин нашата процедура може да бъде хакната в специални SQL заявки, които се хакват както в клиентските програми, така и в други HP или тригери. Тази вариация на нашата процедура стана възможна чрез добавяне на командата SUSPEND в края на процедурата, която трябва да бъде предприета.
Вдясно, в InterBase (и във всичките му клонинги) има два типа процедури, които се записват: избираеми процедури и изпълними процедури. Фактът, че роботите имат два вида HP, е свързан с факта, че процедурите за избор звучат така, че да завъртат безличен набор от входни параметри, групирани в ред, сякаш могат да разглеждат набор от данни, а процедурите за викониране могат или да не се въртят параметрите, или те могат да ги завъртят самостоятелно в Returns, де един ред параметри. Избраните процедури се извикват до заявки SELECT, а извиканите процедури следват помощта на командата EXECUTE PROCEDURE.
След като се обиди, виждайки процедурите, които са запазени, същият синтаксис на създаване и формално не оспорват нищо, тогава дали процедурата може да се използва в заявката SELECT и дали процедурата-селекция е с помощта на EXECUTE PROCEDURE. Храненето е в това как CP се държи с различни видове нечестие. С други думи, разликата е различна в дизайна на процедурата за типа пеене на седмичника. Така че процедурата за избор е създадена специално за заявката на заявка SELECT, а процедурата, която е избрана, е създадена специално за заявката на заявка EXECUTE PROCEDURE. Нека да разгледаме какви мощности се вземат предвид при проектирането на тези два типа HP.
Да разберем как се практикува процедурата-вибрация, да навлезем малко в теорията. Нека получим проста SQL заявка като SELECT ID, NAME FROM Table_example. В резултат на това вземаме предвид изходната таблица, която се състои от две колони (ID и NAME) и същия брой редове (равен брой редове в таблицата Table_example). Превърната в резултатите от тази заявка, таблицата се нарича още SQL набор от данни. . След това сървърът чете скин записа, който подава резултатите от заявката, избира необходимите полета от него (в случай на ID и NAME) и изпраща съобщението до клиента. Нека повторим процеса отново - и така за вибрираната плоча на кожата.
Всички стъпки са необходими, за да може интелигентният четец да разбере, че всички SQL набори от данни се формират в един ред, включително в процедурите, които се записват! І основен vіdminnіst на процедурите - избор на процедури, които се основават на факта, че първите са предназначени за завъртане на безлики редове, а други - само за един. Ето защо смрадът се застосовя по различен начин: процедурата за избор изисква помощта на командата SELECT, като "wimage" в процедурата, за да проверите всички записи, за да можете да я обърнете. Процедурата, която се извиква, се извиква с помощта на EXECUTE PROCEDURE, като "wiymaє" от HP само един ред, а reshta (navit yakshcho смърди!) Игнорирайте.
Нека да разгледаме примера на процедурата за подбор, за да стане по-ясно. За > Прошка, нека запазим процедурата, yak pratsyuє така същото, yak zap SELECT ID, NAME FROM Table_Example, така че няма да можете да изберете полета ID і NAME от използваните таблици. Ос tsey дупе:

СЪЗДАВАНЕ НА ПРОЦЕДУРА Simple_Select_SP
СЕ ЗАВРЪЩА (
procID INTEGER,
procNAME VARCHAR(80))
КАТО
ЗАПОЧНЕТЕ
ЗА
ИЗБЕРЕТЕ ИД, ИМЕ ОТ таблица_пример
INTO:procID, :procNAME
НАПРАВЕТЕ
ЗАПОЧНЕТЕ
ПРЕКРАНЕ;
КРАЙ
КРАЙ

Нека да разгледаме процедурата, наречена Simple_Select_SP. Всъщност няма входни параметри и два изходни параметъра – ID и NAME. Naytsіkavіshe, zvichayno, polagaє в tіlі процедура. Ето конструкцията FOR SELECT:

ЗА
ИЗБЕРЕТЕ ИД, ИМЕ ОТ таблица_пример
INTO:procID, :procNAME
НАПРАВЕТЕ
ЗАПОЧНЕТЕ

/* трябва да променим procID и procName */

КРАЙ

Този shmachok код означава обидно: за реда на кожата, избран от таблицата Table_example, изберете стойността на промяната procID и procName и след това добавете стойността на промяната.
Можете да изработите външния вид и да поискате: "Промяна? Как иначе промяна 9" Ако това е подобно на изненадата от разликата - тези, които са в процедурите, които са запазени, можем да спечелим промяната. На езика на HP можете да озвучите като локална промяна в средата на процедурата и да победите входните и изходните параметри при промяна.
За да се декларира локална промяна в процедурата, която се записва, е необходимо да се включи описание след ключовата дума AS и преди първата дума BEGIN. Описанието на локалната промяна изглежда така:

ДЕКЛАРИРАНЕ НА ПРОМЕНАВА ;

Например, за да се обяви дължината на локалната промяна Mylnt, е необходимо да се вмъкне между AS и BEGIN обидно описание

ДЕКЛАРИРАНЕ НА ПРОМЕНАВА MyInt INTEGER;

Промените в дупето ни са направени от две части. Причината е, че е необходимо да ги промените в средата на FOR SELECT SQL-командата, да разделите полетата в таблиците, които са избрани в SELECT, а за да ги промените, е необходимо да прехвърлите останалите двойници. Дори и да промените, можете да наименувате същото име, като полетата в таблиците!
Ale dvokrapka пред името на промяната е необходимо да спечелите само в средата на SQL заявки. Позирайте с текстовете на звяра, за да се биете до смърт без двокрапка, например:

procName="Някое име";

Нека се обърнем към тялото на нашата процедура. Предложението FOR SELECT завърта данните над визуалните таблици - набор от данни и един ред в даден момент. Завъртаното поле на кожата може да бъде поставено в собствена промяна: ID => procID, NAME => procName. В част от DO и промените се изискват от клиента, който извика процедурата> p>, за помощ на командата SUSPEND
По този начин командата FOR SELECT... DO организира цикъл от записи, които са избрани в частта SELECT на командата. В същия цикъл, който е част от DO, прехвърлянето на изготвения запис към клиента след допълнителната команда SUSPEND се завършва.
Също така процедурата за избор се разпознава за завъртане на един или повече редове, за които се организира цикъл в средата на тялото на HP, който ще възстанови получените промени в параметрите. Например, командата SUSPEND трябва да се използва за последния цикъл на цикъла, сякаш обръща реда с данни към клиента.

Цикли и оператори

Krim командва ЗА SELECT... DO, която организира цикъл от записите по произволен избор, друг тип цикъл - WHILE...DO, който ви позволява да организирате цикъл на базата на повторна проверка на всякакви умове. Axis stock HP, scho vikoristovu цикъл WHILE. НАПРАВЕТЕ. Тази процедура завърта квадратите на цели числа от 0 до 99:

СЪЗДАЙТЕ PROCEDJRE QUAD
ВРЪЩАНЕ (КВАДРАТНО ЦЯЛО ЧИСЛО)
КАТО
ДЕКЛАРИРАНЕ НА ПРОМЕНА I ЦЯЛО ЧИСЛО;
ЗАПОЧНЕТЕ
i = 1;
Докато аз<100) DO
ЗАПОЧНЕТЕ
QUADRAT=I*I;
I=I+1;
ПРЕКРАНЕ;
КРАЙ
КРАЙ

В резултат на заявката SELECT FROM QUAD се нуждаем от таблица, която ще замени един ред от QUADRAT, който ще има квадрати с цели числа от 1 до 99
За да се изброят резултатите от SQL-вибрацията и класическия цикъл, в процедурите на преместване, които се записват, се избира операторът IF...THEN..ELSE, който ви позволява да организирате разграничаването в грешката в резервния вариант в бъдеще, независимо дали синтаксисът е подобен или не на повечето оператори за декомпресия при програмиране на ходове от високо ниво, на квадрат на Паскал и Cі.
Нека да разгледаме сгъваемия пример на процедурата, която се запазва, за да ограбят краката.

  1. Изчислете средната цена в таблицата Table_example (раздел раздел "Таблици първични ключове и генератори")
  2. Дали за скин записа в таблицата, за да започне повторна проверка, тъй като основната цена (PRICE) е по-висока от средната цена, след това задайте цената, равна на стойността на средната цена, плюс задайте фиксирането на водата
  3. Ако цената е по-ниска или по-висока от средната цена, тогава задайте цената, равна на общата цена, плюс половината от цената на дребно между тази средна цена.
  4. Завъртете всички промени в редовете в таблицата.

За кочана има значение името на HP, както и входните и изходните параметри.Всичко е написано в заглавката на процедурата, която се записва

СЪЗДАВАНЕ НА ПРОЦЕДУРА Увеличаване на цените(
Процент2 Увеличете ДВОЙНА ТОЧНОСТ)
ВРЪЩАНЕ (ID INTEGER, ИМЕ VARCHAR(SO), new_price DOUBLE
ТОЧНОСТ КАТО

Процедурата ще се нарича IncreasePrices, има един входен параметър Peiceni21nciease, който може да бъде от тип DOUBLE PRECISION и 3 входни параметъра - ID, NAME и new_pnce. Моля, имайте предвид, че първите два параметъра може да имат същите имена като полетата в таблицата Table_example, с които избираме да анализираме. Tse разрешени от правилата на mov процедурите, които се запазват.
Сега ние сме виновни да изразим локалната промяна, така че вие ​​да спечелите, за да запазите средната стойност. Ще изглеждате така:

ДЕКЛАРИРАНЕ НА ПРОМЯНА avg_price ДВОЙНА ТОЧНОСТ;

Сега да преминем към тялото на процедурата, за което се полагат грижи Ключова дума НАЧАЛО.
Трябва да преброим първия път за нашия алгоритъм - изчислете средната цена. За кого ускоряваме с молба от този вид:

ИЗБЕРЕТЕ AVG(price_l)
ОТ таблица_пример
INTO:ср.цена,-

Това ще захранва агрегатната функция на променливата AVG, така че тя ще завърти средната стойност на полето PRICE_1 на средната стойност на избраните редове - нашата средна стойност на стойността PRICE_1 за всички таблици Table_example. Стойността, която се завърта от заявката, се поставя в промяната avg_price. За възстановяване на уважението, което се променя avg_pnce пред двоен клап, за да се съживят водите, които са победители в заявката.
Особеността на това искане е тези, които винаги проверяват стриктно един единствен запис. Такива заявки се наричат ​​singleton-заявки и само такива избори могат да бъдат избрани в процедурите, които се записват. Ако искате да завъртите повече от един ред, тогава е необходимо да го завършите в структурата FOR SELECT...DO, за да организирате цикъл за обработка на реда на кожата, който се завърта.
Отже, получихме средната стойност на цената. Сега е необходимо да преминете през всички таблици, да сравните стойността на цената в скин записа със средната цена и да живеете в
На кочана организираме сортирането на скин записа от таблицата Table_example

ЗА
ИЗБЕРЕТЕ ИД, NAME, PRICE_1
ОТ таблица_пример
INTO:ID, :NAME, :new_price
НАПРАВЕТЕ
ЗАПОЧНЕТЕ
/*_тук отваряме скин записа*/
КРАЙ

Когато дизайнът е променен от таблицата Table_example, данните и стойностите за поливане в реда на кожата ще получат променен ID, NAME и new_pnce. Вие, очевидно, помните, че избраните данни ще бъдат завъртени в резултат, а не varto: фактът, че изходните параметри са били присвоени, не означава, че клиентът отхвърля стойността qi на клиента на HP! Прехвърлянето на параметри е възможно само когато командата SUSPEND е деактивирана, а преди това можем да променим параметрите като основна промяна - в нашето приложение работим и с параметъра new_price.
Също така, в средата на тялото на цикъла НАЧАЛО.. КРАЙ, можем да променим стойността на реда на кожата. Както си спомняте, за нас е необходимо да знаем, като съществена цена, да се издигнем от средното и да живеем в старите времена. Процедурата Qiu за съпоставяне на mi се изпълнява с помощта на оператора IF:

IF (new_price > avg_price) THEN /*така че текущата цена е по-висока за средната цена*/
ЗАПОЧНЕТЕ
/*след това задайте нова цена, равна на стойността на средната цена, плюс фиксиране на стотици */
нова_цена = (ср.цена + средна_цена*(Percent2Increase/100));
АКТУАЛИЗИРАНЕ Таблица_пример
ЗАДАЙТЕ ЦЕНА_1 = :нова_цена
WHERE ID =: ID;
КРАЙ
ДРУГО
ЗАПОЧНЕТЕ
/* Ако действителната цена е по-малка или по-висока от средната цена, тогава ще определим цената, равна на общата цена, плюс половината от цената на дребно между тази средна цена */
нова_цена = (ново_pnce + ((ср._pnce нова_цена)/2)) ;
АКТУАЛИЗИРАНЕ Таблица_пример
ЗАДАЙТЕ ЦЕНА_1 = :нова_цена
WHERE ID = .ID;
КРАЙ

Като bachite, беше страхотно да завършим страхотната IF конструкция, важно е да го обсъдим, така че не коментирайте, харесвайте да пишете в символа /**/.
За да променим цената по същия начин към изчислената на дребно, ние ускоряваме оператора UPDATE, който ви позволява да променяте действителните записи - един или повече. За да посочим недвусмислено в кой запис трябва да промените цената, ние ще спечелим за разбиране на полето WHERE на първичния ключ, равно на стойността на промяната, в която стойността на ID се взема за записа на потока: ID =: ДОКУМЕНТ ЗА САМОЛИЧНОСТ. Хванете уважението, че ID е сменен пред дублета.
След промяна на конструкцията IF...THEN...ELSE, променените ID, NAME и new_price имат данни, тъй като е наша отговорност да накараме клиента да извика процедурата. За следващото IF е необходимо да се вмъкне командата SUSPEND, така че данните да бъдат изпратени там, звездите, наречени HP. SELECT...DO не преглежда всички записи във вашата заявка.
Необходимо е да се посочи, че се използва командата SUSPEND, така че да се записва само процедурата за запис, да се използва командата EXIT, така че процедурата да се записва след прехвърлянето на реда. Въпреки това, командата EXIT рядко трябва да бъде изпълнена, чиповете са необходими главно за прекъсване на цикъла в обсега на ума.
В случай на отказ, ако процедурата е извикана от оператора SELECT и завършена с EXIT, оставащият ред няма да се завърти. Tobto, ако трябва да прекъснете процедурата и все пак да поемете реда, трябва да ускорите последователността

ПРЕКРАНЕ;
ИЗХОД;

Основната характеристика на EXIT е изборът на единични набори от данни, които са ротирани параметри в прекия път чрез ПРОЦЕДУРА ИЗПЪЛНЕНИЕ. В този случай стойностите на външните параметри се задават, но събирането на SQL данни не се формира и процедурата приключва.
Нека отново запишем текста на нашата процедура, за да може майката да схване тази логика с един поглед:

СЪЗДАВАНЕ НА ПРОЦЕДУРА Увеличаване на цените(
Процент2 Увеличете ДВОЙНА ТОЧНОСТ)
ВРЪЩАНЕ (ЦЕЛО ИД, ИМЕ VARCHAR(80),
new_price ДВОЙНА ТОЧНОСТ) КАТО
ДЕКЛАРИРАНЕ НА ПРОМЯНА avg_price ДВОЙНА ТОЧНОСТ;
ЗАПОЧНЕТЕ
ИЗБЕРЕТЕ AVG(price_l)
ОТ таблица_пример
INTO:ср.цена;
ЗА
ИЗБЕРЕТЕ ИД, NAME, PRICE_1
ОТ таблица_пример
INTO:ID, :NAME, :new_price
НАПРАВЕТЕ
ЗАПОЧНЕТЕ
/*тук обработваме скин записа*/
IF (new_pnce > avg_price) THEN /*така че текущата цена е по-висока за средната цена*/
ЗАПОЧНЕТЕ
/*задаване на нова цена, равна на средната цена, плюс фиксиране на стотици */
нова_цена = (ср.цена + средна_цена*(Percent2Increase/100));
АКТУАЛИЗИРАНЕ Таблица_пример
ЗАДАЙТЕ ЦЕНА_1 = :нова_цена
WHERE ID =: ID;
КРАЙ
ДРУГО
ЗАПОЧНЕТЕ
/* Ако действителната цена е по-малка или по-висока от средната цена, тогава задавам цената равна на общата цена, плюс половината от цената на дребно между сумата и средната цена */
нова_цена = (нова_цена + ((ср. цена - нова_цена)/2));
АКТУАЛИЗИРАНЕ Таблица_пример
ЗАДАЙТЕ ЦЕНА_1 = :нова_цена
WHERE ID =: ID;
КРАЙ
ПРЕКРАНЕ;
КРАЙ
КРАЙ

Датски пример за процедурата, която се записва, илюстрираща развитието на основните конструкции на процедурите и тригерите за запазване на movi. Нека разгледаме начините за коригиране на процедурите, които са запазени за изпълнение на някои често обвинявани задачи.

Рекурсивни процедури, които се записват

InterBase процедурите, които се записват, могат да бъдат рекурсивни. Tse означава, че процедурите, които са запазени, можете да извикате на себе си. Разрешени са до 1000 рубли, които се спестяват, но трябва да запомните, че наличните ресурси на сървъра може да се изчерпят по-рано, но максималната инвестиция на HP ще бъде достигната.
Една от най-широкия набор от процедури, които се запазват, е обработката на дървовидни структури, които се записват в базата данни. Дърветата често се засилват в управлението на складове, складове, персонал и други широки добавки.
Нека да разгледаме примера на процедурата, която се предприема, как да изберем всички стоки от един и същи вид, като се започне от първата равна инвестиция.
Нека да стигна до формулировката на задачата: мога ли да донеса стоки с йерархична структура от този вид:

Стоки
- Побутова техника
- Хладилници
- Три камери
- Двукамерна
- Еднокамерна
- Почистващи машини
- Вертикална
- челен
- Класически
- Вузки
- Компютърна технология
....

Tsya структура dovіdnika categorіy varіv_v може майка g_lki raznoї glibini. и също се натрупват с течение на времето. Нашата мисия е да предоставим селекция от всички елементи на края на деня от "рецитирането на общото име", като се започне от всяка вузла. Например, ако изберем "Palny cars", тогава трябва да вземем предвид следните категории:

Подкопаващи машини - Вертикални
Фронтални автомобили - Фронтални класически
Челни автомобили - По-високи челни автомобили

Структурата на таблиците е важна за събирането на информация за напредъка на стоките. Опростих схемата за организиране на дърво в една таблица:

СЪЗДАВАНЕ НА ТАБЛИЦА GoodsTree
(ID_GOOD INTEGER НЕ НУЛВО,
ID_PARENT_GOOD INTEGER,
GOOD_NAME VARCHAR(80),
ограничение pkGooci първичен ключ (ID_GOOD));

Създаваме една таблица GoodsTree, в която има само 3 полета: ID_GOOD - разумен идентификатор на категория, ID_PARENT_GOOD - идентификатор за дадената категория и GOOD_NAME - името на категорията. За да гарантираме целостта на данните за тази таблица, ние я поставяме в таблицата за обмен на ключа за повикване:

ALTER TABLE GoodsTree
ДОБАВЯНЕ НА ОГРАНИЧЕНИЕ FK_goodstree
ЧУЖЕН КЛЮЧ (ID_PARENT_GOOD)
РЕФЕРЕНЦИИ GOODSTPEE (ID_GOOD)

Масата е самоносеща и същият стар ключ трябва да бъде последван от нея. schob на масата buv posilan на неизвестните бащи, і navіt reshkodzhaє опитайте се да видите категорията на стоките, yakі mayut nashchadki.
Нека го пренесем в нашата таблица с предстоящи данни:

ID_GOOD

1
2
3
4
5
6
7
8
9
10
11
12

ID_PARENT_GOOD

0
1
1
2
2
4
4
4
5
5
10
10

ХУБАВО ИМЕ

СТОКИ
Техника на Побутов
Компютри и аксесоари
Хладилници
Почистващи машини
трикамерна
Двукамерна
Еднокамерна
Вертикална
Челна
Вузки
класически

Сега, ако имаме място за събиране на данни, можем да пристъпим към създаването на процедура за спестяване, която ще види премахването на всички "остатъчни" категории стоки от "уволнената" - например за категорията "Три -камера" извън категорията ще изглежда като "Pobutov tehnіka Хладилници Trikamernі".
Процедурите, които се грижат за дървовидни структури, са разработили своя собствена терминология. Елементът на кожата на дървото се нарича възел; а сините между възлите, които са сгушени един в един, се наричат ​​ботушите на стареца. Вузли, които се намират в самия край на дървото и не правят naschadkiv, се наричат ​​"листа".
За всяка процедура, която ще бъде запазена, входният параметър ще бъде идентификаторът на категорията, поради някаква причина ще започнем да сортираме. Mattime процедурата се записва по следния начин:

СЪЗДАВАНЕ НА ПРОЦЕДУРА GETPULNAME (ID_GOOD2SHOW INTEGER)
ВРЪЩАНЕ (FULL_GOODS_NAME VARCHAR(1000),
ID_CHILD_GOOD INTEGER)
КАТО
ДЕКЛАРИРАНЕ НА ПРОМЯННА CURR_CHILD_NAME VARCHAR(80);
ЗАПОЧНЕТЕ
/*0rgan_zuєmo zovnіshnіy цикъл ЗА ИЗБИРАНЕ за bezporednіmi продуктови етикети с ID_GOOD=ID_GOOD2SHOW */
ЗА ИЗБОР gtl.id_good, gtl.good_name
ОТ GoodsTree gtl
WHERE gtl.id_parent_good=:ID_good2show
INTO:ID_CHILD_GOOD, :full_goods_name
НАПРАВЕТЕ
ЗАПОЧНЕТЕ
/"Проверка за допълнителна функция СЪЩЕСТВУВА, така че завъртете TRUE, така че да получи един ред при завъртане на ръцете. Ако намереният възел ID_PARENT_GOOD = ID_CHILD_GOOD няма преки пътища, тогава това е "лист" на дървото и го консумира в резултат */
АКО (НЕ СЪЩЕСТВУВА(
ИЗБЕРЕТЕ * ОТ GoodsTree
WHERE GoodsTree.id_parent_good=:id_child_good))
ТОГАВА
ЗАПОЧНЕТЕ
/* Подаване на дъгата на дървото към резултата */
ПРЕКРАНЕ;
КРАЙ
ДРУГО
/* За възли, като правене на връзки */
ЗАПОЧНЕТЕ
//
CURR_CHILD_NAME=пълно_име_на_стока;
/* стартирам моята процедура рекурсивно */
ЗА
SELECT ID_CHILD_GOOD,пълно_име на стоката
ОТ GETfulLNAME(:ID_CHILD_GOOD)
INTO:ID_CHILD_GOOD, :full_goods_name
ЗАПОЧНЕТЕ
/*додаємо за вузла-татко на познатия. */
пълно_име_на_стока=CURR_CHILD_NAME| " " | f ull_goods_name,-
ПРЕКРАНЕ; /* обръщам стоката*/
КРАЙ
КРАЙ
КРАЙ
КРАЙ

Ако използваме тази процедура с входния параметър ID_GOOD2SHOW=1, тогава приемаме следното:

Подобно на бахит, с помощта на рекурсивна процедура, която се запазва, преминахме през цялото дърво на категориите и извадихме имената на категориите – „листа“, сякаш се намират на върховете на самите листа.

Висновок

На този етап приключваме прегледа на основните възможности на моите процедури, които са запазени. Очевидно, за да овладеем разбивката на процедурите, които се записват при четене на едно разделение, е невъзможно, ние се опитахме да разкрием и обясним основните понятия, свързани със запазването на процедурите. Описания на дизайна и дизайна на HP могат да бъдат намерени в повечето бази данни
Част от важната храна, свързана с цената на спестените процедури, ще бъде разкрита в предстоящата секция - "Разширяване на възможностите за запазване на междубазови процедури", тъй като е свързана с общата вина, vir_shennya на ситуациите на помилване в процедурите, които се записват от роботи.

В началото на този цикъл светът разгледа как е възможно да се изтеглят данни от таблицата, да се променя нейната структура, да се създават, модифицират и виждат базите данни и обектите, които са скрити в тях. В тази статия ще говорим повече за обектите, които са типични за сървърните СУБД: известия, тригери и процедури, които се записват.

В първата статия от този цикъл, публикувана в № 3'2000 на нашето списание, ние посочихме, че повечето от текущите сървърни СУБД поддържат уведомления, тригери и процедури, които се запазват. Външностите се поддържат и от bugatma DBMS, например Access, dBase, Clipper.

Посочете, че тригерите и процедурите, които се записват, трябва да бъдат написани на език за програмиране, който е процедурно разширение на езика SQL. Разширените изрази ви позволяват да опишете алгоритми, например do...while, if...then... else, използвани в самия SQL език. На разлика от езика, който се подрежда стандарта на SQL, неговите процедури не са стандартизирани, и различни СУБД използват различни синтаксични конструкции за реализация на тези самите конструкции, но обясненията на отличностите в синтаксиса на разширения SQL за различни СУБД се използват за рамки на тази статия.

За да илюстрираме как е възможно да спечелите външния вид, тригерите и процедурите, които се запазват, избрахме Microsoft SQL Server 7.0 и базата данни NorthWind, която е включена преди комплекта за доставка на СУБД.

На първо място, прилагайте, уважавайте тези, които внедряват и запазват тригери и процедури, които са победители в СУБД, могат да се считат за насочващи към тези статистики. Освен това за създаване на сървърни обекти са разрешени следните майки, сякаш е даден администратор на базата данни.

Показателно е също, че някои ODBC драйвери не поддържат цикъла от процедури, които се записват от клиентски добавки, но така се поддържа самата СУБД. Защитете по същия начин процедурите, които са запазени, възможно най-рано, могат да бъдат елиминирани от тригери.

Нека да разгледаме фактите, след това да обсъдим процедурите, които са запазени, и да завършим, като разгледаме тригерите.

Външен вид

Представяне - tse виртуална таблица, звънене на броя на колоните на една от броя на таблиците. Няма реални данни за отмъщение, само SQL заявка от типа SELECT, показваща същите данни и от кои таблици е необходимо да се вземат при връщане към първото представяне. Z tsієї точка zoru yavlennya - tse питам, scho zberіgaєtsya.

Повечето от vipadkiv са представени с победи за сигурността на данните. Например, дяконите от категорията coristuvachiv могат да бъдат достъпни преди да се появят, но не и в таблица, те могат да формират данни; В допълнение, SQL заявката може да зададе параметъра USER (име, под който е регистриран koristuvach), и в този случай наличните данни, когато се върнете към датата, ще попаднат под името на koristuvach.

По-долу са основните характеристики на проявлението:

  • yavlennya се държат като маса;
  • проявено не да отмъсти за данните;
  • Подаването може да спечели повече данни от същата таблица.

За да създадем изгледи, можем да настроим SQL предложението CREATE VIEW, да го модифицираме с предложението ALTER VIEW и да го изтрием с предложението DROP VIEW.

Нека разгледаме израза CREATE VIEW, който ви позволява да създадете изглед за поточна база данни.

СЪЗДАВАЙТЕ предложение VIEW

Синтаксисът на предложението за създаване на израз отгатва предложението SQL SELECT с редица допълнителни ключови думи. По-долу е прост синтаксис:

СЪЗДАВАНЕ НА ИЗГЛЕЖДАНЕ име_на_изглед КАТО израз на_избор

Аргументът view_name указва името на изгледа. Ключовата дума, която се съпоставя в Microsoft SQL Server, ви позволява да прикачите оригиналния текст на предложението CREATE VIEW към таблицата на syscomments.

Ключовата дума AS показва коя SELECT заявка е действително приложима при връщане преди подаване. Внимание, че заявката не може да замени ключовите думи ORDER BY, COMPUTE или COMPUTE BY, INTO и не може да се отнася до графика.

За да промените създаденото по-рано, следвайте следното предложение ALTER VIEW, което е описано в обидния раздел.

ИЗГЛЕЖДАНЕ на предложението

Tsya предложение vikoristovuetsya за vydalannya vyavlennya z danih база. Когато видите таблиците от базата данни, можете да видите всички твърдения, които се отнасят до нея. Vikoristovuyuchi tsyu предложение, ние сме виновни, че казваме im'ya vyavlennya, scho seen. След като бъде видяна, цялата информация за новия се вижда от системните таблици.

Още нещо, ако трябва да го видите, можете да обвините ума си, че структурата на таблиците, на които се основава, се е променила след създаването на явлението. Можете да видите vistava в този изглед и след това да го създадете отново за допълнителното предложение CREATE VIEW.

Създаване и vikoristannya проявление

Предложението CREATE VIEW се използва за създаване на изявление, което ви позволява да промените данните, сякаш те трябва да бъдат дадени на певците. Поданията се създават в текущата база данни и се събират като обект.

Най-добрият начин да създадете външен вид е да създадете заявка SELECT и след като сте я интерпретирали погрешно, да добавите липсващата част от предложението CREATE VIEW. Нека да разгледаме изходния текст на декларацията за продукти по категории в базата данни NorthWind (листинг 1).

Първият ред, визиите с удебелен шрифт, е този, който въвежда предложението SQL за създаването на израза SELECT, което печели робота за избора на данни. Клаузата SELECT, която да се приложи към тези данни, избира полета от две таблици - полето CategoryName от таблицата CATEGORIES и полетата ProductName, QuantityPerUnit, UnitsInStock, Discontinued от таблицата PRODUCTS. След тези данни двете таблици са свързани чрез полето CategoryID и само тези продукти, които са на склад (критерий за разделяне след ключовата дума WHERE) се включват в получения набор от данни. Резултатът от връщането към първото подаване е показан на фиг. един .

Сега нека направим изявление, сякаш показваме всички територии на подобен регион. Целта на презентацията е да излезе от атаката (листинг 2).

След като се забъркаме с факта, че предложението SELECT завърта резултатите, както ни трябва, ние добавяме израза CREATE VIEW и добавяме името EASTTERR, което е създадено (листинг 3).

Вместо да създавате ръчно изпратен текст, можете да използвате визуални инструменти, за да влезете в склада на СУБД. На фиг. Фигура 2 показва как едно и също приложение може да бъде създадено зад допълнителния инструмент View Designer, който е складовата част на Enterprise Manager, който идва преди Microsoft SQL Server.

Горната част на View Designer ви позволява да укажете как се обвързват таблиците и кои полета да се показват в данните. По-долу можете да въведете псевдонимни таблици и полета, подмяна на техните стойности, начин на показване. Дали постави окончателния текст на уведомлението и резултатите от yogo vikonannya.

Първо, нека завърша кратък преглед, ще поговорим малко за тях, как да вземем допълнителна информация за тях. В Microsoft SQL Server 7.0 можем да настроим следните системни процедури, които се записват:

  • За да извлечете информация за документите, можете да използвате системната процедура sp_help. Например, sp_help EastTerr, за да обърнете ситуацията около инцидента;
  • за да редактирате входния текст, можете да настроите процедурата sp_helptext, която се запазва;
  • за да знаете списъка с таблици, в които да съхранявате представяне, можете да използвате системната процедура sp_depends;
  • за да преименувате израз, можете да настроите системната процедура sp_rename, която е запазена.

Разгледахме кого сме разделили, как да спечелим доказателства за премахване на данни, как да изпълним тези и други критерии. Нека се обърнем към останалата част от дупето. В базата данни NorthWind има няколко региона и за избор на списък с територии на избраните региони са ни необходими няколко различни декларации. Задачата може да бъде простена, yakbee може да е предал стойността на RegionID като параметър. Възможно е да се работи за допълнителни процедури, за какво да се погрижим, за които ще говорим в офанзивната дивизия.

Процедури за запазване

Процедурата, която се записва, е компилиране на набор от SQL предложения, запазване в базата данни като именуване на обекти и конкатенация като единичен кодов фрагмент. Процедурите за запис могат да приемат и въртят параметри. Ако създадете процедура, която е запазена, сървърът я компилира и я поставя в кеша, който се разпространява, след което компилационният код може да бъде блокиран от стикери. Ако програмата спечели процедурата, която е запазена, тя предава параметрите според нуждите и сървърът печели процедурата без повторно компилиране.

Процедурите за запазване ви позволяват да увеличите производителността на програмите. На първо място, porіvnjano іz огромни SQL-заявки, които се засилват от клиентски програми, смрадът отнема по-малко от час за подготовка преди края, смрадите на смрадта вече са компилирани и запазени. От друга страна, броят на трафика на моменти също е по-малък, понякога предаването на SQL заявка е по-малко, докато броят на данните се предават по едно и също време. Ориз. 3 илюстративни седмични процедури, които се приемат от приложението на клиента.

Процедурите за запазване се прекомпилират автоматично, сякаш с обекти, изливане на смрад в тях, zrobleno be-yaki промяна; іnakshe kazhuchi, смрад zavzhdi действително. Както вече беше споменато по-горе, процедурите, които се записват, могат да приемат параметри, които позволяват на различни добавки да спечелят една и съща процедура, застосовуващи различни набори от входни данни.

Процедурите за запазване са необходими за поддържане на целостта на данните и прилагането на бизнес правила. На моменти, добавкова гъвкавост, достъпни са фрагменти, тъй като бизнес правилата се променят, можете да промените текста на процедурата, без да променяте клиентските допълнения.

За да създавате, променяте и модифицирате процедури, използвайте специални SQL предложения - CREATE PROCEDURE, ALTER PROCEDURE и DROP PROCEDURE. Гледаме ги в офанзивната дивизия.

Предложение СЪЗДАВАНЕ НА ПРОЦЕДУРА

Клаузата CREATE PROCEDURE е избрана за създаване на процедурата, която да бъде запазена. Може да има обиден синтаксис за синтаксис:

CREATE PROC proc_name [(@parameter data_type) [= default] ] [...] AS sql_statements

Аргументът proc_name задава името на процедурата, което може да бъде запазено, ако може да бъде уникално в базата данни на нишките. Аргументът @parameter определя параметър на процедурата. Клаузата CREATE PROCEDURE може да има един или повече параметри. Въпреки че няма стойност за параметъра за промоции, може да има преводи от кореспондент (или клиентско допълнение) в рамките на часа на седмичната процедура. В Microsoft SQL Server 7.0 броят на параметрите на процедурата, които се приемат, не е отговорен за отмяната на 1024; за umovchannyam смрад mozhut майка znachennya NULL.

Показателно е, че такива универсални механизми за достъп до данни могат да наложат допълнителни ограничения върху броя на параметрите на процедурите, които се запазват. Например, BDE драйверът за Oracle 8 е вграден за работа само с процедури, чийто брой параметри не се променя 10.

Аргументът data_type определя типа данни за параметъра. Ключовата дума по подразбиране може да се използва за задаване на стойност зад промоция - тя може да бъде константа или NULL. Когато е посочена стойност за заключване, процедурата може да бъде пропусната без стойност за параметъра. По същия начин процедурата използва параметър с ключовата дума LIKE, стойността на промоцията може да бъде заменена с групови знаци (%, _ и [^]).

Ключовата дума OUTPUT показва кой параметър да се обърне.

Ключовата дума AS показва, че процедурата е виновна за виконирането между виждането на колко SQL предложения и предложения в SQL процедурното разширение, специфично за този сървър.

Процедурата, създадена за допълнителната клауза CREATE PROCEDURE, ще бъде запазена от поточната база данни. В Microsoft SQL Server имената на процедурите се поставят в системната таблица на sysobjects, а изходният текст се поставя в таблицата на syscomments.

За да се промени това, което беше направено по-рано, се избира следната процедура, за да спечели предложението ПРОМЕНИ ПРОЦЕДУРА, която е описана накратко в следващия раздел.

ПРОЦЕДУРА ОТПАДАНЕ на предложението

Tsya предложение vikoristovuetsya за отдалечени процедури, които са взети от базата данни. Предложението DROP PROCEDURE приема един аргумент, името на процедурата, която трябва да се види.

При премахване на запазени процедури информацията за тях се премахва от системните таблици sysobjects и syscomments.

Създаването на избраните процедури, които се записват

В клона, присвоен на събитията, отдадохме уважение на онези, които биха били удобни, така че можем да предадем параметър към презентацията, който да замени стойността на RegionID за избор на един от четирите региона в базата данни на NorthWind. Нека го разгледаме отново, което превръща списъка с територии в региона:

ИЗБЕРЕТЕ Territories.TerritoryDescription, Region.RegionDescription ОТ територии INNER JOIN Region ON Territories.RegionID = Region.RegionID WHERE Territories.RegionID = 1

За да изберем друг регион, трябва да променим мнението си в клаузата WHERE в останалата част от реда. Освен това, тъй като сме променили (наречено RegID), можем да изберем един от четирите региона, без да променяме други части от записването.

Базата данни NorthWind има няколко региона с номера от 1 до 4. Това означава, че RegID може да бъде променен като цял тип. Кодът на процедурата, която трябва да се предприеме, е показан по-долу:

СЪЗДАВАНЕ НА ПРОЦЕДУРА ShowRegion @RegID int КАТО ИЗБЕРЕТЕ Territories.TerritoryDescription, Region.RegionDescription ОТ територии INNER JOIN Region ON Territories.RegionID = Region.RegionID WHERE Territories.RegionID = @RegID

Дайте кредит на тези, които може да са лишили целия текст на заявката SELECT не е заета (в визии в курсив) и само е добавено предложението CREATE PROCEDURE към името на новосъздадената запазена процедура (в първия ред), параметърът оттегляне (в другия ред) и ключовата дума AS, scho vkazuє cob propositions, наистина vykonuyut diї.

Резултатът от създадената процедура SQL Server Query Analyzer за RegID = 2 показания на фиг. 3 .

Очевидно можем да запазим процедурите, които се записват, не само за изпълнение на разширени версии на манифестацията, но и на "интелектуални" SELECT заявки. Процедурите за запис предоставят механизми, които ви позволяват да автоматизирате много рутинни задачи.

С Microsoft SQL Server 7.0 можем също да настроим процедурите за запазване на системата, за да работим с най-важните процедури, които се запазват:

  • sp_stored_procedures - показва списък с процедури за запис;
  • sp_helptext - показва текста на процедурата, която ще бъде запазена;
  • sp_depends - показва информация за застояването на процедурите за запис;
  • sp_procoption - задайте опции за процедури, които се записват или задават;
  • sp_recompile - прекомпилирайте процедурата по време на следващата седмица;
  • sp_rename – промяна на името на процедура.

Системни процедури, които се записват

Говорим за Microsoft SQL Server, но имаме предвид големия брой системни процедури, които се записват и изпълняват от него. Имената на системните процедури, които се записват, започват от SP_ или XP_ и се записват в главната база данни. По-често вече описахме делата на често победоносните системни процедури, които се спасяват.

Разкриете уважение, че тригерите не са виновни за обръщане на користувачевите данни.

Предложението CREATE TRIGGER може да има две специални таблици. Например, изтритите и вмъкнатите таблици могат да имат същата структура като таблица, да се присвоява тригер и да се изтриват стари и нови стойности на записи, които са били променени. Например, можем да завъртим следното SQL предложение, за да търсим отдалечени записи:

SELECT * FROM изтрит

На масата Фигура 3 показва както изтритите, така и вмъкнатите таблици за всички възможни промени в данните.

За да промените явно задействане, следвайте предложението ALTER TRIGGER. Нека поговорим за нещо ново в офанзивната дивизия.

За кочана трябва да добавим две нови полета към таблицата, в които числата ще бъдат намалени. А именно їх UpdatedBy (името на мениджъра, който е спрял записа) и UpdatedWhen (часът, в който записът е променен). Нека създадем тригер, наречен KeepTrack. код на оста йога:

CREATE TRIGGER KeepTrack ON Customers INSERT, UPDATE AS UPDATE Customers SET Customers.UpdatedBy = USER_NAME(), Customers.UpdatedWhen = GETDATE() FROM вмъкнато, Customers WHERE inserted.CustomerID = Customers.CustomerID

Както можете да видите от изходния текст на тригера, vin се проверява след операциите INSERT и UPDATE в таблицата Customers. Този тригер ще запази името на мениджъра (база данни) от полето Customers.UpdatedBy и ще промени датата и часа от полето Customers.UpdatedWhen. Номера на данните са изключени от графика, въведени.

Подобно на Bachimo, този тригер ви позволява да следвате промените и да вмъквате нови записи в таблицата.

Преди това, как да завършим кратък преглед на тригерите, ние сме виновни за помощ, така че можете да знаете информацията за тригерите. Таблицата sysobjects съхранява информация за тригери и типове, а таблицата syscomments съхранява техния изходен текст.

Висновок

В тази част разгледахме няколко типа обекти на базата данни - процедури, откриване и тригери, които се записват. Разпознахме аванса:

  • Външен вид - tse виртуална таблица, звук, създаден като подмножество от колони в един брой таблици. За създаване на изглед се използва предложението CREATE VIEW, за модифицирането му предложението ALTER VIEW и за изтриване предложението DROP VIEW.
  • Процедурата, която се записва, е компилиране на набор от SQL предложения, запазване в базата данни като именуване на обекти и конкатенация като единичен кодов фрагмент. За да създадете процедура, която се записва, се задава предложението СЪЗДАВАНЕ НА ПРОЦЕДУРА, за промяна - ПРОМЕНИ ПРОЦЕДУРА и за изтриване - ОТПУСКА ПРОЦЕДУРА.
  • Тригерът е специален тип процедура, която се записва, тъй като се извиква автоматично, ако данните в единичната таблица са добавени, видими или променени за допълнителни SQL предложения INSERT, DELETE или UPDATE. Тригерите се създават с помощта на клаузата CREATE TRIGGER. За да промените задействане, се избира предложението ALTER TRIGGER и предложението DROP TRIGGER се премахва.

Компютърна преса 12"2000г

Записване на SQL процедури - хакване на програмен модул, който може да бъде запазен от разглеждане на различни обекти. С други думи, обектът, който има SQL-инструкциите. Процедурите, които се записват, могат да се използват в клиенти на приложения за постигане на добра производителност. В допълнение, такива обекти често се извикват от други сценарии или за вдъхновение на някакъв друг вид разпространение.

Влизане

Важно е всеки да знае, че те са подобни на други процедури (например MS SQL). Може би си прав. Те могат да имат сходни параметри, да виждат подобни стойности. Над тях вонята стои цял час. Например, смрадите са свързани с базите данни DDL и DML, както и с основните функции (кодово име - UDF).

Всъщност SQL процедурите, за които се грижи, имат широк спектър от предимства, тъй като виждат средата на тези процеси. Безпека, променливост на програмирането, производителност - всичко това добавя към ядрото, което работи от бази данни, повече данни. Пикът на популярността на процедурите падна през 2005-2010 г., ако програмата беше пусната под името "Microsoft" под името SQL Server Management Studio. С помощта на бази данни стана много по-просто, по-практично и по-удобно. От рока в света такава набира популярност сред програмистите. Днес това е абсолютно здрава програма, като за потребители, като “свързване” с бази данни, стана като “Exel”.

Когато щракнете върху процедурата, тя незабавно се обработва от самия сървър без zayvih protsessіv, че vtruchannya coristuvacha. Ако е така, можете да zdiyasnyuvati да бъде като далечна, vikonannya, промяна. За всичко това ви е необходим DDL-оператор, който е самоук да ограбва най-сложните части от обработката на обекти. Освен това изглежда, че е много бърз, а сървърът всъщност не е navantazhuetsya. Този вид скорост и производителност ви позволяват лесно да прехвърляте големи количества информация от сървъра към сървъра.

За внедряването на тази технология роботите с информация са базирани на mov програмиране. Преди тях можете да видите например PL / SQL като Oracle, PSQL в системите InterBase и Firebird, както и класическия Transact-SQL „Microsoft“. Всички смърди се разпознават за създаване и приключване на процедури, които се записват, които позволяват овладяване на алгоритми в страхотни бази данни. Необходимо е тези, които управляват такава информация, да могат да защитят всички обекти от неоторизиран достъп до системи на трети страни и, очевидно, да създават, променят или преглеждат други данни.

производителност

Обектите на база данни Qi могат да бъдат програмирани с различни пътища. Tse позволява на coristuvachas да избере вида на викорния метод, който ще бъде най-подходящ, което ще спести силата на този час. Освен това самата процедура се обработва, което ви позволява да скриете страхотните почасови обменни курсове между сървъра и сървъра. Също така модулът може да бъде препрограмиран и сменен по всяко време. По-специално е важно да се отбележи гъвкавостта, за която се очаква стартирането на запазената SQL процедура: този процес е по-подобен на други, подобни на него, за да бъде ефективен и универсален.

Безпека

Този тип обработка на информация се използва в подобни процеси, което гарантира подобрена сигурност. Tse bezpechuetsya за сметка на факта, че достъпът на други до процедурите може да бъде изключен отново. Tse да позволи на администратора да извършва операции с тях самостоятелно, без да се страхува от perehoplennya информация или неоторизиран достъп до базата данни.

Прехвърляне на данни

Връзката между SQL процедурата, която е взета, и добавката на клиента се основава на различни параметри и стойности, които се въртят. Нека не прехвърляме obov'yazkovo данни на процедурата, която се записва, информацията се обработва (главно при поискване) и се обработва за SQL. Тъй като процедурата, която е запазена, приключи работата си, има пакети с данни обратно (але, знам, за грешките) към допълнението, така че да можете да използвате йога, победни методи, с помощта на които можете да намерите разберете как да запишете SQL процедурата, така че и завъртете, например:

Подаване на данни за допълнителен параметър към типа на изхода;

Прехвърляне на данни за помощ на оператора;

Силата на почит за съдействието на оператора при избора.

А сега нека да погледнем, сякаш разглеждаме целия процес по средата.

1. Създаване на EXEC запазена процедура в SQL

Можете да създадете процедура в MS SQL (Managment Studio). След като процедурата бъде създадена, тя ще бъде пренаредена от програмните базови данни на vuzol, в които процедурата ще бъде създадена от оператора. За vykonannya SQL процедура, scho zberіgayutsya, vykoristovuyut EXEC-процес, kaki m_sti іm'ya на самия обект.

Когато процедурата се комбинира, първо се декларира името, след което се избират един или повече от зададените за вас параметри. Параметрите могат да бъдат необвързващи. Тъй като параметрите за тялото на процедурата ще бъдат записани, е необходимо да се извършат необходимите операции.

Вдясно, тъй като тялото може да се смени локално, roztashovani в nіy, и tsі се променя локално също според датата преди процедурите. С други думи, те могат да се видят само в средата на тялото на процедурата на Microsoft SQL Server. Процедурите за спестяване на моменти са vvazhayutsya местни.

По този начин, за да създадем процедура, се нуждаем от името на процедурата и поне един параметър в тялото на процедурата. Хванете уважението, че най-важният вариант за такова време е създаването на процедурата за името на схемата в класификатора.

Тялото на процедурата може да бъде някакъв пример, като например създаването на таблици, вмъкването на един или ред редове в таблици, типа и естеството на базата данни и т.н. Протео тялото на процедурата е между победите на текущите операции в новата. Актовете за важно разграничаване са изградени по-долу:

Тялото не е виновно за извършване на друга процедура, която се спасява;

Тялото може да създаде прошка за обекта;

Тялото не е виновно за създаването на ежедневни тригери.

2. Инсталиране на промяна в тялото на процедурата

Можете да ги промените локално спрямо тялото на процедурата, а миризмите ще се сменят само в средата на тялото на процедурата. Добра практика е създаването на процедури, които се сменят върху кочана на тялото, които се запазват. Но също така е възможно да се инсталират промени на всяко място в тялото на даден обект.

В някои случаи можете да разберете, че няколко от промените са инсталирани в един ред и кожата на параметъра за промяна е подсилена с вода. Също така, моля, имайте предвид, че можете да промените префикса @. Можете да вмъкнете промяна за вида на процедурата, където пожелаете. Например промяната на @NAME1 може да бъде озвучена по-близо до края на процедурата. За да се даде значението на безгласната промяна, се събира набор от специални данни. Въз основа на ситуацията, ако повече от една промяна е изразена в един ред, в такава ситуация има по-малко от един набор от специални данни.

Доста често викторините питат: "Как да разпознаете малка стойност в едно изявление в заглавието на процедура?" Добре. Хранете цикавата, но е по-лесно да я направите по-богата, не мислите така. Съвет: за помощ на такива двойки, като "Select Var = value". Можете да победите шансовете, разпространявайки ги с кома.

В най-манипулативните дупета хората показват създаването на проста процедура, за какво се полагат грижи и виконання її. За тази процедура можете да вземете такива параметри като процеса, това, което той извиква, и стойността е близка до новата (но не я променяйте). Когато вонята избяга, тогава в средата на тялото започват процесите. Например как да създадете процедура, как да приемете местоположението на региона от абоната, какво да извикате и да обърнете данните за тях, колко автори са изпратени до местоположението на този регион. Процедурата ще вземе предвид таблиците на авторите на базата данни, например Pubs, до края на списъка с автори. За да разгледаме базата данни, например, Google улавя SQL скрипта от страната на SQL2005.

В предния случай процедурата приема два параметъра, които ще се наричат ​​@State и @City на английски. Типът на данните е в съответствие с типа, присвоен на добавката. Заглавието на процедурата може да бъде вътрешно променено от @TotalAuthors (от всички автори) и ще бъде променено с цел показване на тяхното количество. Dalі z'yavlyaєtsya razdіl vyboru zaputu, yakii всички pіdrakhovuє. Nareshti, podrahovane znachennya vіdobrazhaєєtsya vіknі vyvodu за съдействието на оператора на приятел.

Как да запиша процедурата с SQL Viconati

Има два начина да следвате процедурата. Показва се първият път, преминаващ параметрите, тъй като списъкът с деления се показва след името на процедурата. Допустимо е, може да имаме две значения (като в предното дупе). Стойностите се вземат за допълнителни променящи се параметри на процедурите @State и @City. Чиито целият начин на прехвърляне на параметри е във важен ред. Този метод се нарича порядъчно предаване на аргумент. По друг начин параметрите се разпознават недвусмислено и по този начин редът не е важен. Друг начин да направите това е да предадете наименувани аргументи.

Процедурата може да бъде променена стандартно. Така върви, като в предното дупе, но само тук се показват параметрите. Така че параметърът @City се взема първо, а @State се взема от стойностите за заключване. Параметърът зад ключалката ще звучи така, сякаш всичко е наред. SQL процедурите, които се записват, се предават като прости параметри. В този случай, имайте предвид, че параметърът UT отменя стойността за заключване на SA. Другата викуна има повече от една стойност на аргумента за параметъра @ City, а параметърът @ State приема стойността на CA ключа. Актуализациите на програмата ще бъдат доволни, така че промените за съкращенията ще бъдат актуализирани по-близо до края на списъка с параметри. По различен начин, ние не можем да vykonannya и дори вие сте виновни, че практикувате с прехвърлянето на именуване на аргументи, което е по-добро и по-сгъваемо.

4. Запазване на процедурите на SQL Server: Начини за завъртане

Има три важни начина за управление на данните при запазените процедури за възбрана. Вонята е реабилитирана по-долу:

Обръщане на стойността на процедурата, която се предприема;

Изключете параметъра на процедурите, които се записват;

Изберете една от запазените процедури.

4.1 Обръщане на стойността на запазване на SQL процедури

При този метод процедурата дава стойността на локалната промяна и я завърта. Процедурата може да се обърне без забавяне. В атакуващия дупе те създадоха процедура, сякаш преобръщаха голям брой автори. Ако сравните тази процедура с предишните, можете да си помислите, че значението за другата се заменя с връщането.

Сега да се чудим как да следваме процедурата и да влезем в смисъла, как да се обърнем. Vikonannya процедура vmagaє vstanovlennya zminnoї, че приятел, як да се извършва след процеса. Имайте предвид, че можете да замените оператор Select, например Select @RetValue, както и OutputValue.

4.2 Премахнете параметрите на SQL процедурите, които са запазени

Значението на vіdpovіd може да бъде vikoristane за завъртане на един zminnoy, който ние и bachiled в предния приклад. Вариант на изходния параметър позволява на процедурата да коригира една или друга стойност на промяната за другата страна. Изходният параметър се обозначава със същата ключова дума "Изход", когато се създава процедурата. Ако параметърът на заданието е изходен параметър, тогава обектът на процедурата е отговорен за задаването на неговата стойност. Процедурите за запазване на SQL, които могат да се използват по-ниско, се използват в различни случаи с информация за подпакет.

Нашето приложение ще има две официални имена: @ TotalAuthors и @ TotalNoContract. Миризмата се обозначава от списъка с параметри. Qi zminnі дават значението на средата на тялото на процедурата. Ако спечелим параметрите, абонатът може да избере стойността, вмъкната в средата на тялото на процедурата.

Освен това в предишния сценарий се правят две промени, за да се увеличи стойността, сякаш се запазва процедурата на MS SQL Server в изходния параметър. След това процедурата е изпреварена от пътя на настройка на нормалната стойност на параметъра CA. Следващите параметри са същите, а по-късно беззвучните промени се предават по ред. Уловете уважението, че часът на преминаване на променените дни е ключовата дума, също е дадена тук. След като процедурата е успешна, се показва значението, когато се обръщат за допълнителна помощ на последните параметри за по-нататъшно съгласуване.

4.3 Изберете една от SQL процедурите за запазване

Тази техника се използва за завъртане на набора от стойности в таблиците с данни (RecordSet) до пълната процедура, която се предприема. За това приложение SQL процедурата, която се записва, с параметрите @AuthID, захранва таблицата "Автори" с път на филтър, записите се въртят след допълнителния параметър @AuthId. Инструкцията Select отменя това, което може да се завърти и извиква процедури за избор. Когато процедурата се провали, AuthId се предава обратно. Такава процедура тук винаги върти само един запис, в противен случай е необходимо. Ale, процедурата, която се предприема, не може да прехвърля повече от един запис всеки ден. Често е възможно да се използва пример, за някои от ротациите на данните с различни параметри, с участието на изчисляването на промяната, има начин за даване на редица стойности на пакета.

Накрая

Процедурата, която се записва, е да се допълни със сериозен софтуерен модул, който той върти или предава, а също така инсталира необходимите промени в клиентското допълнение. Oskіlki процедура, която се запазва, vikonuєtsya на самия сървър, обменът на данни с големи задължения между сървъра и добавката на клиента (за тези, подлежащи на приспадане) могат да бъдат изтрити. Това ви позволява да преминете към SQL сървъра, който очевидно отива в ръцете на техните владетели. Една от предвидимите са T SQL процедурите, за които се грижат онези, които участват в създаването на значими бази данни. Също така има голям, величествен брой нюанси, които могат да бъдат различни при извършване на процедури, които се запазват, е необходимо повече за тези, които планират да се занимават с програмиране, включително професионално.