Хранимые процедуры в SQL | Обзор

Хранимые процедуры в SQL | Обзор

В этом блоге мы собираемся обсудить хранимые процедуры в SQL, которые вы можете использовать для сохранения набора кода и повторного его использования, когда вам это нужно. Хранимые процедуры аналогичны представлениям. Однако вы можете выполнять обычные табличные операции , такие как DROP, TRUNCATE, DELETE и т. д., с хранимыми процедурами, которые вы не можете выполнять с представлениями.

Хранимые процедуры также предварительно скомпилированы, поэтому они работают быстрее, чем представления. Это также сводит к минимуму количество данных, отправляемых на сервер базы данных.

Оглавление

Синтаксис хранимых процедур в SQL: без параметров

Чтобы создать хранимую процедуру без параметров, нужно начать с функции CREATE . Затем добавьте функцию PROC , сразу введите имя процедуры и добавьте функцию AS .

хранимые процедуры в SQL |  Обзор

Создание хранимой процедуры в похоже на создание таблиц и представлений. Однако разница заключается в процессе получения данных.

Например, если мы хотим получить данные из представления, мы используем « SELECT * FROM имя_представления ». С другой стороны, для хранимых процедур мы используем EXEC, что означает «выполнить», а затем вводим имя хранимой процедуры .

хранимые процедуры в SQL |  Обзор

Как только мы выполним хранимую процедуру , она также выведет информацию на основе добавленных вами инструкций или команд.

Синтаксис хранимых процедур в SQL: с параметрами

Перейдем к . Процесс аналогичен предыдущему примеру, который я продемонстрировал. Единственная разница в том, что вам нужно включить параметры перед функцией AS , а также тип данных сразу после.

хранимые процедуры в SQL |  Обзор

Вы также можете использовать параметр, который вы объявили при создании хранимой процедуры в своих командах. Это сделано для того, чтобы вы могли сэкономить время, вводя несколько значений. Например, вместо того, чтобы вручную вводить customerID1 , customerID2 и т. д., мы использовали @custid или параметр, чтобы избежать длинного набора кода.

хранимые процедуры в SQL |  Обзор

Обратите внимание, что при использовании или включении параметра важно использовать символ @ . Вы также можете включить столько параметров, сколько хотите, а не только один. Вот как мы выполняем хранимые процедуры с параметрами.

хранимые процедуры в SQL |  Обзор

Как вы можете заметить, мы также использовали параметр со значением, равным 1 , при выполнении хранимой процедуры. Это принесет только информацию custid1 .

Пример сценария хранимых процедур в SSMS

Давайте еще примеры хранимых процедур в SQL. В первую очередь я собираюсь создать образец хранимой процедуры с помощью выделенной ниже команды.

хранимые процедуры в SQL |  Обзор

Для соглашения об именах при создании хранимой процедуры мы обычно используем «usp» или «sp», чтобы указать, что это хранимая процедура. Если вам интересно, что означает «usp», это просто означает пользовательская хранимая процедура. 

Далее мы напишем запросы для хранимой процедуры, которые будут обрабатываться при ее выполнении.

хранимые процедуры в SQL |  Обзор

Запросы в предыдущем примере просто удалят таблицу с именем dbo.stageOrders . Затем он воссоздаст dbo.stageOrders с данными из таблицы Sales.SalesOrderHeader

Давайте создадим эту хранимую процедуру , выделив следующий код и нажав кнопку «Выполнить» .

хранимые процедуры в SQL |  Обзор

После этого вы должны увидеть такое сообщение.

хранимые процедуры в SQL |  Обзор

Затем мы выполним хранимую процедуру, запустив EXEC usp_TEST .

хранимые процедуры в SQL |  Обзор

После выполнения хранимой процедуры usp_TEST dbo.stageOrders теперь должен иметь данные из Sales.SalesOrderHeader . Давайте проверим содержимое dbo.stageOrders , выполнив приведенную ниже команду.

хранимые процедуры в SQL |  Обзор

В результате это данные, которые мы создали в dbo.stageOrders на основе команд, которые мы добавили в нашу хранимую процедуру.

хранимые процедуры в SQL |  Обзор

Второй пример сценария

Перейдем к другому примеру. На этот раз я не хочу удалять таблицу dbo.stageOrders и воссоздавать ту же таблицу с данными, поступающими из таблицы Sales.SalesOrderHeader .

Вместо этого я просто хочу, чтобы данные из таблицы Sales.SalesOrderHeader отображались всякий раз, когда я выполняю хранимую процедуру « usp_TEST » .

Для этого мне нужно внести изменения в недавно созданную хранимую процедуру с помощью инструкции ALTER .

хранимые процедуры в SQL |  Обзор

В этом примере мы использовали оператор ALTER , который используется для изменения нашей хранимой процедуры. Вы также можете применить это к представлениям и таблицам. Как только мы запустим код на скриншоте выше, он должен изменить запросы, которые будут обрабатываться нашей хранимой процедурой.

На этот раз он не будет воссоздавать никакую таблицу, как мы это делали ранее. Если мы выполним « usp_TEST », он просто принесет данные из таблицы Sales.SalesOrderHeader .

хранимые процедуры в SQL |  Обзор

хранимые процедуры в SQL |  Обзор

Третий пример сценария

Давайте сделаем другой пример. На этот раз мы повторно используем таблицу dbo.stageOrders, которая была у нас в первом примере создания хранимой процедуры в SSMS . Мы начнем с этого примера, выбрав таблицу dbo.stageOrders. 

хранимые процедуры в SQL |  Обзор

Результаты при выборе всех данных из dbo.stageOrders должны быть такими.

хранимые процедуры в SQL |  Обзор

Теперь давайте очистим таблицу dbo.stageOrders, выполнив usp_TEST . Мы можем сделать это, добавив следующую команду.

хранимые процедуры в SQL |  Обзор

После добавления команды TRUNCATE TABLE нам нужно обновить usp_TEST .

хранимые процедуры в SQL |  Обзор

После этого должно появиться сообщение о том, что команды выполнены успешно . Затем мы снова выполним usp_TEST .

хранимые процедуры в SQL |  Обзор

После выполнения usp_TEST он покажет все записи из Sales.SalesOrderHeader , а также очистит таблицу dbo.stageOrders

хранимые процедуры в SQL |  Обзор

Чтобы проверить, пуста ли таблица dbo.stageOrders, нам нужно выбрать ее с помощью следующей команды и выполнить.

хранимые процедуры в SQL |  Обзор

После запуска приведенного выше кода мы видим, что таблица dbo.stageOrders теперь пуста. Это связано с командой TRUNCATE TABLE , которую мы использовали для обновления usp_TEST .

хранимые процедуры в SQL |  Обзор

Расположение сохраненных хранимых процедур в SQL

Если вы хотите увидеть, где сохраняется хранимая процедура в SQL , перейдите на панель обозревателя объектов с левой стороны и щелкните значок « + » перед базой данных, с которой вы работаете.

хранимые процедуры в SQL |  Обзор

Затем щелкните правой кнопкой мыши «Программируемость» и выберите «Обновить» .

хранимые процедуры в SQL |  Обзор

хранимые процедуры в SQL |  Обзор

Разверните папку или группу «Программируемость» , щелкнув значок « + ». Затем разверните группу «Хранимые процедуры», выполнив тот же шаг. Внутри группы «Хранимые процедуры» вы должны увидеть dbo.usp_TEST .

хранимые процедуры в SQL |  Обзор

хранимые процедуры в SQL |  Обзор

Если вы хотите проверить, какие команды или запросы выполняет конкретная хранимая процедура в SQL, вы можете щелкнуть правой кнопкой мыши хранимую процедуру и выполнить шаги, показанные на снимке экрана ниже.

хранимые процедуры в SQL |  Обзор

После этого он откроет хранимую процедуру на другой вкладке, где вы сможете увидеть представленные в ней команды. Вот так выглядит dbo.usp_TEST при открытии.

хранимые процедуры в SQL |  Обзор

Как видите, перед оператором CREATE есть несколько команд по умолчанию . Вы можете просто удалить это, если хотите. 

хранимые процедуры в SQL |  Обзор

Теперь вы знаете, как проверить, какие команды выполняет хранимая процедура в SQL .

Создание хранимой процедуры в SQL с параметрами

Далее мы собираемся создать хранимую процедуру с параметрами. Например, мы собираемся использовать следующий код для создания новой хранимой процедуры.

хранимые процедуры в SQL |  Обзор

В примере кода я использовал тот же процесс создания хранимой процедуры с именем usp_GetCustomer . Затем я добавил параметр @CustomerID с типом ввода INT .

Обратите внимание, что после того, как вы добавили параметр при создании хранимой процедуры, вы всегда должны указывать параметр всякий раз, когда собираетесь выполнять команду.

Давайте посмотрим, что произойдет, если мы выполним usp_GetCustomer без указания параметра.

хранимые процедуры в SQL |  Обзор

При выполнении usp_GetCustomer без параметра появилось сообщение об ошибке. Вот как это будет выглядеть, если мы выполним usp_GetCustomer с параметром.

хранимые процедуры в SQL |  Обзор

С предоставленным параметром мы можем получить правильный результат при выполнении нашей хранимой процедуры .

Создание хранимой процедуры со значением по умолчанию

Если вы хотите избежать получения сообщения об ошибке при выполнении хранимой процедуры с параметром, вы можете установить значение по умолчанию, которое будет служить параметром по умолчанию.

Например, мы собираемся создать хранимую процедуру с именем usp_GetOrdersByYear .

Затем я добавлю параметр @OrderYear с типом ввода « INT » и значением по умолчанию, равным 2011 .

хранимые процедуры в SQL |  Обзор

Если мы выполним usp_GetOrdersByYear без указания параметра, он отобразит записи с 2011 годом .

хранимые процедуры в SQL |  Обзор

хранимые процедуры в SQL |  Обзор

С другой стороны, если мы выполним usp_GetOrdersByYear с 2014 в качестве заданного параметра, он должен отобразить записи с 2014 годом .

хранимые процедуры в SQL |  Обзор

хранимые процедуры в SQL |  Обзор

Именно так вы используете хранимые процедуры в повседневных задачах управления данными.

Предложение HAVING в агрегатных функциях SQL
ISNULL Функция SQL в операторах case
Извлечение данных SQL с использованием OFFSET и FETCH

Заключение

Приняв все во внимание, вы узнали, что такое хранимая процедура в SQL и ее назначение. Мы также обсудили инструкцию ALTER , которая используется для внесения изменений или обновлений в существующую хранимую процедуру.

Кроме того, вы узнали, что существуют различные методы создания хранимых процедур в SQL, и узнали, как избежать ошибок при выполнении хранимой процедуры, указав значение по умолчанию.

Самое главное, вы научились использовать хранимые процедуры для хранения наборов команд, чтобы избежать повторного выполнения длинных наборов кода. И последнее напоминание: не забывайте использовать символ « @ » при указании параметра.

Всего наилучшего,

Хафиз


Что такое self в Python: примеры из реального мира

Что такое self в Python: примеры из реального мира

Что такое self в Python: примеры из реального мира

Как сохранить и загрузить файл RDS в R

Как сохранить и загрузить файл RDS в R

Вы узнаете, как сохранять и загружать объекты из файла .rds в R. В этом блоге также рассказывается, как импортировать объекты из R в LuckyTemplates.

Новый взгляд на первые N рабочих дней — решение для языка кодирования DAX

Новый взгляд на первые N рабочих дней — решение для языка кодирования DAX

В этом руководстве по языку программирования DAX вы узнаете, как использовать функцию GENERATE и как динамически изменять название меры.

Продемонстрируйте идеи с помощью метода многопоточных динамических визуализаций в LuckyTemplates

Продемонстрируйте идеи с помощью метода многопоточных динамических визуализаций в LuckyTemplates

В этом учебном пособии рассказывается, как использовать технику многопоточных динамических визуализаций для создания аналитических сведений из динамических визуализаций данных в ваших отчетах.

Введение в фильтрацию контекста в LuckyTemplates

Введение в фильтрацию контекста в LuckyTemplates

В этой статье я пройдусь по контексту фильтра. Контекст фильтра — одна из основных тем, с которой должен ознакомиться любой пользователь LuckyTemplates.

Лучшие советы по использованию приложений в онлайн-службе LuckyTemplates

Лучшие советы по использованию приложений в онлайн-службе LuckyTemplates

Я хочу показать, как онлайн-служба LuckyTemplates Apps может помочь в управлении различными отчетами и аналитическими данными, созданными из различных источников.

Анализ изменений маржи прибыли с течением времени — аналитика с LuckyTemplates и DAX

Анализ изменений маржи прибыли с течением времени — аналитика с LuckyTemplates и DAX

Узнайте, как рассчитать изменения вашей прибыли, используя такие методы, как разветвление показателей и объединение формул DAX в LuckyTemplates.

Идеи материализации кэшей данных в DAX Studio

Идеи материализации кэшей данных в DAX Studio

В этом руководстве будут обсуждаться идеи материализации кэшей данных и то, как они влияют на производительность DAX при предоставлении результатов.

Бизнес-отчетность с использованием LuckyTemplates

Бизнес-отчетность с использованием LuckyTemplates

Если вы все еще используете Excel до сих пор, то сейчас самое подходящее время, чтобы начать использовать LuckyTemplates для своих бизнес-отчетов.

Что такое шлюз LuckyTemplates? Все, что тебе нужно знать

Что такое шлюз LuckyTemplates? Все, что тебе нужно знать

Что такое шлюз LuckyTemplates? Все, что тебе нужно знать