События
31 мар., 23 - 2 апр., 23
Самое большое событие обучения SQL, Fabric и Power BI. 31 марта – 2 апреля. Используйте код FABINSIDER, чтобы сэкономить $400.
Зарегистрироваться сегодняЭтот браузер больше не поддерживается.
Выполните обновление до Microsoft Edge, чтобы воспользоваться новейшими функциями, обновлениями для системы безопасности и технической поддержкой.
Применимо к:SQL Server
База данных Azure SQL
Управляемый экземпляр Azure SQL
Аналитика Azure Synapse
Система аналитических платформ (PDW)
База данных SQL в Microsoft Fabric
В этой статье описывается изменение хранимой процедуры в SQL Server с помощью SQL Server Management Studio или Transact-SQL.
Хранимые процедуры Transact-SQL нельзя преобразовать в хранимые процедуры CLR, и наоборот.
Если предыдущее определение процедуры было создано с помощью WITH ENCRYPTION
или WITH RECOMPILE
, эти параметры включены только в том случае, если они включены в инструкцию ALTER PROCEDURE
.
Необходимо разрешение ALTER PROCEDURE на процедуру.
Чтобы изменить процедуру в SQL Server Management Studio, выполните следующие действия:
В Обозревателе объектов подключитесь к экземпляру СУБД, а затем раскройте этот экземпляр.
Разверните Базы данных, разверните базу данных, которой принадлежит процедура, а затем разверните Программирование.
Разверните Хранимые процедуры, щелкните правой кнопкой мыши изменяемую процедуру, затем выберите Изменить.
Измените текст хранимой процедуры.
Для проверки синтаксиса выберите пункт Выполнить анализ в меню Запрос.
Чтобы сохранить изменения определения процедуры, выберите пункт Выполнить в меню Запрос.
Чтобы сохранить обновленное определение процедуры в виде скрипта Transact-SQL, в меню "Файл " выберите "Сохранить как". Примите предложенное имя файла или замените его новым, затем нажмите кнопку Сохранить.
Важно!
Проверяйте все данные, вводимые пользователем. Не объединяйте вводимые пользователем данные, пока не выполните их проверку. Никогда не выполняйте команду, построенную на основании непроверенных пользовательских входных данных. Непроверенные входные данные пользователя делают базу данных уязвимой для атаки под названием SQL-инъекция. Дополнительные сведения см. в статье о внедрении SQL.
Чтобы изменить процедуру с помощью команд T-SQL, выполните следующие действия:
В Обозревателе объектов подключитесь к экземпляру СУБД, а затем разверните этот экземпляр.
Разверните Базы данных, затем разверните базу данных, в которой находится процедура. Также можно выбрать необходимую базу данных из списка доступных баз данных на панели инструментов. В данном примере выберите базу данных AdventureWorks2022
.
В меню Файл выберите Создать запрос.
Скопируйте и вставьте следующий пример в редактор запросов. В примере создается Purchasing.uspVendorAllInfo
процедура, которая возвращает имена всех поставщиков в базе данных Adventure Works Cycles, продукты, которые они предоставляют, их кредитные рейтинги и их доступность.
CREATE PROCEDURE Purchasing.uspVendorAllInfo
WITH EXECUTE AS CALLER
AS
SET NOCOUNT ON;
SELECT v.Name AS Vendor, p.Name AS 'Product name',
v.CreditRating AS 'Rating',
v.ActiveFlag AS Availability
FROM Purchasing.Vendor v
INNER JOIN Purchasing.ProductVendor pv
ON v.BusinessEntityID = pv.BusinessEntityID
INNER JOIN Production.Product p
ON pv.ProductID = p.ProductID
ORDER BY v.Name ASC;
GO
В меню Файл выберите Создать запрос.
Скопируйте и вставьте следующий пример в редактор запросов. В следующем примере изменяется процедура uspVendorAllInfo
. Предложение EXECUTE AS CALLER
удаляется, и изменяется текст процедуры, чтобы возвращать только поставщиков, предлагающих указанный товар. Функции LEFT
и CASE
настраивают внешний вид результирующего набора.
Важно!
При удалении и повторном создании хранимой процедуры происходит удаление разрешений, которые были явно предоставлены хранимой процедуре. Используйте ALTER
для изменения существующей хранимой процедуры.
ALTER PROCEDURE Purchasing.uspVendorAllInfo
@Product varchar(25)
AS
SET NOCOUNT ON;
SELECT LEFT(v.Name, 25) AS Vendor, LEFT(p.Name, 25) AS 'Product name',
'Rating' = CASE v.CreditRating
WHEN 1 THEN 'Superior'
WHEN 2 THEN 'Excellent'
WHEN 3 THEN 'Above average'
WHEN 4 THEN 'Average'
WHEN 5 THEN 'Below average'
ELSE 'No rating'
END
, Availability = CASE v.ActiveFlag
WHEN 1 THEN 'Yes'
ELSE 'No'
END
FROM Purchasing.Vendor AS v
INNER JOIN Purchasing.ProductVendor AS pv
ON v.BusinessEntityID = pv.BusinessEntityID
INNER JOIN Production.Product AS p
ON pv.ProductID = p.ProductID
WHERE p.Name LIKE @Product
ORDER BY v.Name ASC;
GO
Чтобы сохранить изменения определения процедуры, выберите пункт Выполнить в меню Запрос.
Чтобы сохранить обновленное определение процедуры в виде скрипта Transact-SQL, в меню "Файл " выберите "Сохранить как". Примите предложенное имя файла или замените его новым, затем нажмите кнопку Сохранить.
Чтобы выполнить измененную хранимую процедуру, выполните следующий пример.
EXEC Purchasing.uspVendorAllInfo N'LL Crankarm';
GO
События
31 мар., 23 - 2 апр., 23
Самое большое событие обучения SQL, Fabric и Power BI. 31 марта – 2 апреля. Используйте код FABINSIDER, чтобы сэкономить $400.
Зарегистрироваться сегодняОбучение
Модуль
Создание хранимых процедур и определяемых пользователем функций - Training
Это содержимое является частью хранимых процедур и определяемых пользователем функций.
Документация
Создание хранимой процедуры - SQL Server
Узнайте, как создать хранимую процедуру Transact-SQL с помощью SQL Server Management Studio и инструкции Transact-SQL CREATE PROCEDURE.
ALTER PROCEDURE (Transact-SQL) - SQL Server
ALTER PROCEDURE (Transact-SQL)
Выполнение хранимой процедуры - SQL Server
Узнайте, как выполнить хранимую процедуру с помощью SQL Server Management Studio или Transact-SQL.