-- Указание по имени
EXEC <stored procedure> @parml=<value>, @parm2=<value>, ...
--Указание по позиции
EXEC <stored procedure> <value>, <value>, ...
Независимо от способа передачи параметров в процедуру вы должны задать значения для каждого параметра, не имеющего значения по умолчанию.
Если хранимая процедура выполняется в первой строке пакета программного кода, ключевое слово EXEC не обязательно. Но в любом другом месте пакета для вызова хранимой процедуры требуется EXEC. Даже если перед вызовом процедуры расположены только комментарии, ключевое слово EXEC все равно необходимо.
Пример 2.15. |
Способы запуска процедуры ProcMax (см. пример 2.9)
ProcMax 21, 3, 6
EXEC ProcMax @a=1, @b=3
Для применения выходных параметров следом за каждым из них необходимо указывать ключевое слово OUT или OUTPUT.
-- Применение выходных параметров
DECLARE @variablel <data type>,
@variable2 <data type>
...
EXEC <stored procedure> @parameterl, @variablel OUTPUT, @variable2 OUT
SQL Server создан для обработки наборов данных. Однако бывают ситуации, когда необходимо обрабатывать данные построчно. Результат инструкции SELECT возвращается в серверный объект, называемый курсором, который позволяет обращаться к каждой строке результирующего набора поочередно и даже перемещаться вперед и назад по строкам набора.
SQL Server разработан и оптимизирован для операций над наборами данных или множествами. Курсор заставляет механизм управления базой данных выполнять построчную обработку. Курсор никогда не будет столь же эффективен, как эквивалентная обработка на основе множеств.
У курсоров есть пять компонентов.
1. Инструкция DECLARE применяется для задания инструкции SELECT, которая служит основой для формирования строк курсора.
2. Инструкция OPEN вызывает выполнение инструкции SELECT И загрузку строк в структуру памяти.
3. Инструкция FETCH применяется для извлечения одной строки из курсора.
4. Инструкция CLOSE завершает обработку курсора.
5. Инструкция DEALLOCATE удаляет курсор и освобождает структуры памяти, содержащие результирующий набор курсора.
Если курсор используется в хранимой процедуре, нет необходимости закрывать и удалять его. Когда хранимая процедура завершается, SQL Server автоматически закрывает и удаляет курсоры, созданные в процедуре, освобождая память для последующего использования.
Далее приведена общая синтаксическая запись объявления курсора.
DECLARE cursor_name CURSOR [ LOCAL | GLOBAL ] [ FORWARD_ONLY | SCROLL ] [ STATIC | KEYSET | DYNAMIC | FAST_FORWARD ] [ READ_ONLY | SCROLL_LOCKS | OPTIMISTIC ] [ TYPE_WARNING ]
FOR select_statement
В следующих трех инструкциях показаны три разных способа объявления одного и того же курсора.
DECLARE curproducts CURSOR FAST_FORWARD FOR
SELECT ProductID, ProductName, ListPrice FROM Products.Product
GO
DECLARE curproducts CURSOR READ-ONLY FOR
SELECT ProductID, ProductName, ListPrice FROM Products.Product
GO
DECLARE curproducts CURSOR FOR
SELECT ProductID, ProductName, ListPrice FROM Products.Product
После объявления курсора вводится команда OPEN для выполнения инструкции SELECT.
OPEN curproducts
Далее необходимо извлечь данные из строки курсора с помощью инструкции FETCH.
Когда инструкция FETCH выполняется первый раз, указатель помещен на первую строку результирующего набора курсора. После каждого выполнения инструкции FETCH курсор перемещается на следующую строку в результирующем наборе, пока не иссякнут все строки.
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.