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 Содержание |