Skip to main content

Креирање ускладиштених процедура за ваш СКЛ Сервер

Anonim

Мицрософт СКЛ Сервер обезбеђује механизам сачуваног поступка за поједностављивање процеса развоја базе података групирањем Трансацт-СКЛ израза у управљачким блоковима. Већина СКЛ Серверових програмера који цене ефикасност и сигурну предност коју користе, вреднују унапред улагања у времену.

Користи коришћења ускладиштених процедура

Зашто би програмер требао користити похрањене процедуре?

Ево кључних предности ове технологије:

  • Претходно компајлирано извршење: СКЛ Сервер једном саставља сваку похрањену процедуру и поново користи план извршења. Ово доводи до огромног повећања перформанси када се похрањене процедуре позивају више пута.
  • Смањен клијент / сервер: Ако је мрежни пропусни опсег забринут у вашем окружењу, бићете срећни што ћете сазнати да ускладиштене процедуре могу смањити дуге СКЛ упите на једну линију која се преноси преко жице.
  • Ефикасна поновна употреба кода и апстракција програма: Чуване процедуре могу користити вишеструки корисници и клијентски програми. Ако их искористите на планиран начин, видећете да развојни циклус траје мање времена.
  • Побољшане сигурносне контроле: Корисницима можете дозволити да изврше складиштену процедуру независно од дозвољених дозвола таблице.

Схрањене процедуре су сличне корисничким функцијама, али постоје суптилне разлике.

Структура

Чуване процедуре сличне су конструкцијама које се виде у другим програмским језицима.

Прихватају податке у облику улазних параметара који су наведени у вријеме извршења. Ови улазни параметри (ако се имплементирају) користе се у извршењу серије изјава које производе неки резултат. Овај резултат се враћа у позивно окружење кориштењем регистра, параметара излазних података и повратног кода.

То може звучати као уста, али ћете наћи да су похрањене процедуре заправо прилично једноставне.

Пример

Хајде да погледамо практичан пример који се односи на таблицу названу инвентар приказан на дну ове странице. Ове информације се ажурирају у реалном времену, а руководиоци складишта стално проверавају нивое производа који се чувају у свом складишту и доступни за испоруку. У прошлости, сваки менаџер ће покренути упите сличне следећим:

СЕЛЕЦТ Продуцт, КуантитиФРОМ ИнвенториВХЕРЕ Варехоусе = 'ФЛ'

Ово је резултирало неефикасним перформансама на СКЛ Серверу. Сваки пут када је менаџер складишта извршио упит, сервер базе података био је принуђен да поново изврши компајлирање и изврши га из нуле. Такође је захтевао да менаџер складишта има знања о СКЛ-у и одговарајуће дозволе за приступ информацијама таблице.Уместо тога, процес се може поједноставити употребом ускладиштене процедуре. Ево шифре процедуре која се зове сп_ГетИнвентори која преузима ниво инвентара за одређено складиште.

ЦРЕАТЕ ПРОЦЕДУРЕ сп_ГетИнвентори@лоцатион варцхар (10)КАОСЕЛЕЦТ Продуцт, КуантитиФРОМ ИнвенториГдје је складиште = @локација

Менадзер магацина у Флориди може онда приступити нивоима инвентара издавањем наредбе:

ЕКСЕЦУТЕ сп_ГетИнвентори 'ФЛ'

Менаџер магацина складишта у Њујорку може користити исту ускладиштену процедуру за приступ попису тог подручја:

ЕКСЕЦУТЕ сп_ГетИнвентори 'НИ'

Наравно, ово је једноставан пример, али предности апстракције могу се видети овде. Менаџер складишта не мора разумјети СКЛ или унутрашње радње поступка. Из перспективе перформанси, чувена процедура ради на чудама. СКЛ Сервер једном креира план за извршење, а затим га поново извршава укључивањем одговарајућих параметара у време извршења.Сада када сте научили предности складиштених процедура, изадите тамо и користите их.

Пробајте неколико примера и измерите побољшања перформанси постигнутих - бићете запањени!

Табела инвентара

ИДПроизводСкладиштеКоличина
142БоранијаНИ100
214ПеасФЛ200
825КукурузНИ140
512Лима пасуљНИ180
491ПарадајзФЛ80
379ЛубеницаФЛ85