FAQ по Базам Данных
|
Простейшая хранимая процедура |
|
Для начала неплохо бы понять, для
чего вообще нужны хранимые процедуры.
Допустим, если сервер БД, в котором
хранятся данные, используемые в формулах
на клиенте. Оператору, который работает
на клиенте, сами эти данные не нужны, ему
нужен готовый результат из формулы. То
есть что же это получается? - Клиент
получает данные из БД и у себя их
обрабатывает? А если клиентов много,
формул в них еще больше, а данных в базе -
вообще море, то сервер и сеть испытывают
серьездные перегрузки. Вот поэтому и были
созданы хранимые процедуры, позволяющие обрабатывать данные еще на
сервере, а клиенту передавать готовый
результат. Кроме того, так как часть кода
программы сосредотачивается на сервере в
виде хранимых процедур, не нужно будет
править клиентов при каждом обновлении.
А теперь - ближе к делу: запускаем Enterprise Manager, выбираем нашу БД, а в ней, в разделе Stored Procedures -New Stored Procedure...
CREATE PROCEDURE [OWNER].[PROCEDURE NAME] ASЗдесь нужно указать владельца процедуры вместо OWNER (достаточно указать dbo), имя процедуры (вместо PROCEDURE NAME). Вот что написал я: CREATE PROCEDURE [dbo].[MY_PROC] AS
SELECT * FROM Table1
Если теперь выполнить запрос
EXEC MY_PROCто выполнится наша процедура, и соответственно будут выведены результаты SELECT'а. А можно ли передавать параметры в процедуру? Можно! Вот так: CREATE PROCEDURE [dbo].[MY_PROC]
@name char(50)
AS
exec('SELECT * FROM '+@name+'')
Что произойдет при вызове
EXEC MY_PROC 'Table1'
я думаю понятно всем :) - выполнится
выборка из Table1. Но ведь можно указать и
другую таблицу? ;)
Если нужно передать несколько параметров, укажите их через запятую - @name char(50), @id int Содержание |