Вы можете запускать процедурный код везде, где можете выполнить запрос.
Просто скопируйте все после AS
:
BEGIN
DECLARE @myvar INT
SELECT *
FROM mytable
WHERE @myvar ...
END
Этот код выполняет те же действия, что и хранимый процесс, но не хранится на стороне базы данных.
Это очень похоже на анонимную процедуру в PL/SQL
.
Обновление:
Название вашего вопроса немного сбивает с толку.
Если вам нужно только создать процедуру, если она не существует, тогда ваш код в порядке.
Вот что SSMS
выводит в скрипте создания:
IF EXISTS ( SELECT *
FROM sys.objects
WHERE object_id = OBJECT_ID(N'myproc')
AND type IN ( N'P', N'PC' ) )
DROP …
CREATE …
Обновление:
Пример того, как это сделать при включении схемы:
IF EXISTS ( SELECT *
FROM sysobjects
WHERE id = object_id(N'[dbo].[MyProc]')
and OBJECTPROPERTY(id, N'IsProcedure') = 1 )
BEGIN
DROP PROCEDURE [dbo].[MyProc]
END
В приведенном выше примере dbo - это схема.
Обновление:
В SQL Server 2016+ вы можете просто сделать
CREATE OR ALTER PROCEDURE dbo.MyProc