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