Изменение хранимой процедуры
Применимо к: SQL Server Azure SQL DatabaseУправляемый экземпляр SQL AzureAzure Synapse Analytics AnalyticsPlatform System (PDW)
В этой статье описывается изменение хранимой процедуры в SQL Server с помощью SQL Server Management Studio или Transact-SQL.
ограничения
Хранимые процедуры Transact-SQL нельзя преобразовать в хранимые процедуры CLR, и наоборот.
Если предыдущее определение процедуры было создано с параметрами WITH ENCRYPTION или WITH RECOMPILE, эти параметры будут включены только в случае, если они указаны в инструкции ALTER PROCEDURE.
Permissions
Необходимо разрешение ALTER PROCEDURE на процедуру.
Использование SQL Server Management Studio
Чтобы изменить процедуру в SQL Server Management Studio, выполните следующие действия:
В обозревателе объектов подключитесь к экземпляру Компонент Database Engine и разверните его.
Последовательно разверните узел Базы данных, базу данных, которой принадлежит процедура, и узел Программирование.
Разверните Хранимые процедуры, щелкните правой кнопкой мыши изменяемую процедуру, затем выберите Изменить.
Изменение текста хранимой процедуры.
Для проверки синтаксиса выберите пункт Выполнить анализ в меню Запрос.
Чтобы сохранить изменения определения процедуры, выберите пункт Выполнить в меню Запрос.
Чтобы сохранить обновленное определение процедуры в виде скрипта Transact-SQL, в меню Файл выберите Команду Сохранить как. Примите предложенное имя файла или замените его новым, затем нажмите кнопку Сохранить.
Важно!
Проверяйте все данные, вводимые пользователем. Не включайте их в сценарий, не выполнив проверку. Никогда не выполняйте команду, построенную на основании непроверенных пользовательских входных данных. Дополнительные сведения см. в разделе Внедрение кода SQL.
Использование Transact-SQL
Чтобы изменить процедуру с помощью команд T-SQL, выполните следующие действия:
В обозревателе объектовподключитесь к экземпляру компонента Компонент Database Engine и разверните его.
Разверните узел Базы данных, разверните базу данных, в которой находится процедура. Также можно выбрать необходимую базу данных из списка доступных баз данных на панели инструментов. В данном примере выберите базу данных
AdventureWorks2022
.В меню Файл выберите Создать запрос.
Скопируйте и вставьте следующий пример в редактор запросов. В этом примере будет создана процедура
uspVendorAllInfo
, которая возвращает для всех поставщиков в базе данных Компания Adventure Works Cycles их имена, поставляемую продукцию, кредитные рейтинги и доступность.IF OBJECT_ID ( 'Purchasing.uspVendorAllInfo', 'P' ) IS NOT NULL DROP PROCEDURE Purchasing.uspVendorAllInfo; GO 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
Важно!
При удалении и повторном создании хранимой процедуры происходит удаление разрешений, которые были явно предоставлены хранимой процедуре. Вместо этого используйте инструкцию ALTER.
В меню Файл выберите Создать запрос.
Скопируйте и вставьте следующий пример в редактор запросов. В следующем примере изменяется процедура
uspVendorAllInfo
. ПредложениеEXECUTE AS CALLER
удаляется, и изменяется текст процедуры, чтобы возвращать только поставщиков, предлагающих указанный товар. Содержимое результирующего набора определяется при помощи функцийLEFT
иCASE
.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
Следующие шаги
Обратная связь
https://aka.ms/ContentUserFeedback.
Ожидается в ближайшее время: в течение 2024 года мы постепенно откажемся от GitHub Issues как механизма обратной связи для контента и заменим его новой системой обратной связи. Дополнительные сведения см. в разделе:Отправить и просмотреть отзыв по