Microsoft SQL Server 2018

Microsoft SQL Server 2005

Съхранявана процедура - това е най-често се използва в базите данни на програма структура, която има за цел по специален начин на скрипта (или по-скоро, на пакета), която се съхранява в базата данни, а не в отделен файл. Съхранени процедури се различават от сценариите, които имат право да използват входните и изходните параметри и да се върнете ценности, които не могат да бъдат реално използвани по обичайния сценарий.

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

Както сървърния софтуер съхранени процедури имат редица предимства.

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

Управление на съхранени процедури

Съхранени процедури са контролирани от инструкциите за езикови дефиниране на данни (DDL) създава, променя и DROP.

Споделено код T-SQL синтаксис за създаване на запомнена процедура е както следва:

CREATE PROC | ПРОЦЕДУРА

[ <@parameter> [= ] [OUT | OUTPUT]] [. п]

[Започне] [END]

Структурата на този оператор спазва основния синтаксис на CREATE , в основата на който и да е оператор CREATE. Единствената отличителна черта е, че той може да използва процедурата по ключова дума или Proc. И двата варианта са валидни: PROC е само абревиатура на процедура.

Всяка процедура трябва да бъде уникален в рамките на името на базата данни (procedure_name), което съответства на правилата за идентификатори на обекти.

Процедури могат да имат произволен брой входни параметри (@parametr) даден тип данни (DATA_TYPE), които се използват в процедурата, както местните променливи. При извършване на процедурата за всеки от формални параметри, обявени за действителни стойности, които се предават. Алтернативно, стойност по подразбиране (по подразбиране) може да бъде определен за въвеждане на параметър, който трябва да бъде постоянна или равна на NULL. В този случай, процедурата може да се извърши без да се посочва стойността на съответния аргумент. Използването на по избор входни параметри.

Възможно е също така да се уточни на изходните параметри (с надпис ИЗХОД), което позволява на запомнена процедура за връщане на един или повече скаларни стойности на подпрограмата, от която е наречена. Когато създавате процедура, можете да посочите три параметъра. Когато създавате процедура с параметър криптиране SQL Server криптира процедурата по идентификация. Ако използвате прекомпилирате SQL Server ще прекомпилирате запомнена процедура всеки път, когато го стартирате. ИЗПЪЛНЯВАТ като параметър определя контекста на сигурността на процедурата.

В определението на съхранени процедури след ключовата дума AS трябва да бъде внесен директно процедура тяло (sql_statements) код от една или повече инструкции T-SQL език.

изявление DROP изтрива съхраняват процедура от базата данни. изявление ALTER променя съдържанието на цялата съхранена процедура. За да направите промени предпочитане да се използва изявлението ALTER, а не комбинация от инструкциите за премахване и създаване, тъй като последният метод премахва всички разрешения.

Пример съхраняват процедура без параметри

СЪЗДАВАНЕ НА ПРОЦЕДУРА spr_getOrders

SELECT IdOrd, IdCust, OrdDate

За да тествате новата процедура, отворете нов заявка SQL Server и изпълнява следния код.

ИЗПЪЛНЯВАТ команда или съкращение EXEC изпълнява съхранена процедура.

Прилагане на входни параметри
Съхранената процедура предвижда определени процесуални възможности (и ако той се прилага в инфраструктурата на .NET, такива възможности са много важни), както и осигуряване на подобрена ефективност, но в повечето случаи, съхранена процедура не позволява много, ако не и даде възможност да я дам някои данни, показващи какви действия трябва да се направи с него. По-специално, основният проблем с предишните съхраняват процедура (spr_getOrders), тя е статична. Ако потребителите трябва да поръчате информация за различен период от време, а след това тази процедура няма да им помогне. Поради това е необходимо да се предвиди възможността за прехвърляне в него на съответните входни параметри, които ще променят динамично периода на вземане на проби.

@parameter_name [AS] тип данни [= подразбиране | NULL]

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

[Spr_getOrders] ALTER процедура [DBO].

SELECT IdOrd, IdCust, OrdDate

КЪДЕ (OrdDate МЕЖДУ @dateBegin И @dateEnd)

Следващите три примери показват запомнени процедури повиквания и да ги прехвърлят на параметрите посредством оригиналните реда и имената:

Прилагане на изходните параметри
Изходни параметри позволяват на съхранената процедура, за да се върнете на данни на извикващата програма. За определяне на изходните параметри на дума OUT на [PUT], което е необходимо, тъй като в процедурата по оценяване, и когато тя се нарича. В повечето съхранена процедура изходни параметри са локални променливи. Повикващата процедура или изходни Величини на опаковката трябва да бъдат предварително определени за получаване на получената стойност. Когато съхранената процедура е завършена, текущата настройка ще бъде прехвърлена локална променлива повикващия.

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

СЪЗДАВАНЕ НА ПРОЦЕДУРА spr_addProduct

@Description nvarchar (100),

INSERT продукта ([Описание] InStock)

СТОЙНОСТИ (@Description, @InStock)

SET @IdProd = @@ ИДЕНТИЧНОСТ

ДЕКЛАРИРАМЕ @IdProd вътр

EXEC spr_addProduct
@Description = N "Нови книги"

@IdProd = @IdProd ИЗХОД

SELECT @IdProd като N '@IdProd "

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

Потвърждение за успешно или неуспешно приключване на работата използване на стойностите на връщане. Използването komandyRETURN.

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

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

RETURN [<Целое число>]

Имайте предвид, че стойността на връщане винаги трябва да е цяло число.

връщани стойности са предназначени само за посочване на успеха или неуспеха на съхранената процедура и ще позволи дори да определи степента или характера на успех или неуспех. Използването на върнатата стойност да се върне на реални данни, като стойността на идентификация или данни за броя на редовете, засегнати съхранена процедура се счита за невалиден програмиране практика. Върнатата стойност 0 означава успешно изпълнение на процедурата и настройката по подразбиране. Microsoft е запазил стойностите от -99 до -1 само за вътрешно ползване. Разработчиците за връщане на състояние на грешка, потребителят се насърчават да използват стойностите на -100 или по-малко.

Един от най-важните характеристики на отчета за RETURN е, че прилагането му води до безусловно прекратяване и изхода на съхранената процедура. Това означава, че, независимо от местонахождението на отчета за RETURN в кода на съхранена процедура, след представянето му, вече няма да се проведе или един ред код. По абсолютна изключване означава, че ефектът, предоставена от оператора RETURN, извършена без значение къде в кода е била открита. От друга страна, поносимостта на код се съхранява в процедура няколко оператора да върне, и изпълнение на тези оператори да се случи само, ако това води до по-конвенционална структура на процеса на управление на код.

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

ALTER процедура [DBO]. [Spr_addProduct]

@Description nvarchar (100),

Ако съществуват (SELECT * от продукта където [Описание] = @Description)

INSERT продукта ([Описание] InStock)

СТОЙНОСТИ (@Description, @InStock)

SET @IdProd = @@ ИДЕНТИЧНОСТ

Когато се обаждате на запомнена процедура, ако очакваната стойност на производството, EXEC команда, за да използвате целочислена променлива:

EXEC @ lokalnaya_peremennaya = sp_name;

ДЕКЛАРИРАМЕ @return_value вътр,

EXEC @return_value = spr_addProduct

@Description = N "Нови книги"

@IdProd = @IdProd ИЗХОД

АКО @return_value = 0

За печат "Този продукт е добавен успешно"
SELECT @IdProd като N '@IdProd "

За печат "Възникна грешка при добавяне на продукта"

Изберете "Return Value" = @return_value

Упражнения: Създаване на съхранени процедури, които прилагат, както следва:

  • Връща списък на всички поръчки, които съдържат даден продукт (за IdProd).
  • Определяне на броя на клиентите, които не разполагат с никакви поръчки. Резултатът трябва да бъде върнат чрез изход параметър.
  • Изтриване от база данни с информация за конкретен клиент (от IdCust). Ако този клиент има свързани записи (разпореждания) преместването трябва да бъде отменена. Върнатата стойност трябва да бъде определящ за успеха на операцията.

Като цяло, това е всичко, което исках да споделя на SQL. Лично аз наистина харесва това, разбира се, той е бил обучен от него. Изненадващо, познаване на SQL ми много полезен. Успех в по-нататъшното развитие на езика, научете се, че все още не е нищо! =)

Microsoft SQL Server 2005