ПредишенСледващото

Специализация: информатика, кибернетика и програмиране

Размер на файла: 87 KB

изтеглен на работа: 18 души.

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

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

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

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

CREATE PROC | ПРОЦЕДУРА [ <@parameter> [= ] [OUT | OUTPUT]] [. п] AS [започне] [END] . = [Криптиране] [прекомпилирате] [EXECUTE_AS_Clause]

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

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

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

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

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

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

Прилагане на входни параметри

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

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

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

ALTER процедура [DBO]. [Spr_getOrders] @dateBegin дата и час. @dateEnd дата и час AS SELECT IdOrd, IdCust, OrdDate ОТ [Поръчка] КЪДЕТО (OrdDate МЕЖДУ @dateBegin И @dateEnd)

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

Прилагане на изходните параметри

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

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

CREATE ПРОЦЕДУРА spr_addProduct @Description nvarchar (100), @InStock Int = 0, @IdProd междинно съединение като

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

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

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

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

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

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

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

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

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

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

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

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

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

ALTER процедура [DBO]. [Spr_addProduct] @Description nvarchar (100), @InStock Int = 0, @IdProd междинно съединение като

Ако съществуват (SELECT * от продукта където [Описание] = @Description) ВРЪЩАНЕ -100

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

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

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

EXEC @ lokalnaya_peremennaya = sp_name;

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

EXEC @return_value = spr_addProduct @Description = N "Нови книги". @IdProd = @IdProd ИЗХОД

АКО @return_value = 0 започне ПЕЧАТ "позиция е добавен успешно" SELECT @IdProd като N '@IdProd "END

ELSE ЗАПОЧНЕТЕ PRINT "Когато добавите грешка продукта е възникнало" SELECT "Return Value" = @ върне _ стойност END

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

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

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

Свързани статии

Подкрепете проекта - споделете линка, благодаря!