IF not exists 里怎么创建存储过程

godshome 2019-10-24 07:46:39
如下,1=1是段检测,查这个过程是否存在。
如果存在,就不创建。
强调一下,存在就不创建,也不能更新或删除,因为 存储过程可能被其他人修改过了,以他人的版本为准。


IF 1=1
BEGIN
CREATE PROCEDURE [test_procedure_name]
@parameter_name AS INT
AS
BEGIN
SELECT @parameter_name*@parameter_name
END
END

...全文
238 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
godshome 2019-10-25
  • 打赏
  • 举报
回复
引用 1 楼 吉普赛的歌 的回复:
可以类似下面处理:
USE tempdb
GO
DECLARE @sql NVARCHAR(MAX)
IF NOT EXISTS(SELECT 1 FROM sys.procedures AS p WHERE p.[object_id]=OBJECT_ID('Proc_Test'))
BEGIN
	SET @sql='
-- =============================================
-- Author:		yenange
-- Create date: 2019-10-24
-- Description:	测试存储过程
-- =============================================
CREATE PROCEDURE dbo.Proc_Test 
AS
BEGIN
	set nocount on
	print ''你看还行不??'';
END
' 
	EXEC(@sql);
	PRINT '添加存储过程完毕.'
END
ELSE
BEGIN
	PRINT '存储过程已存在,不作任何处理.'
END

--执行测试存储过程
EXEC Proc_Test
只能这样了,我以为有我不知道的语法。
吉普赛的歌 版主 2019-10-24
  • 打赏
  • 举报
回复
可以类似下面处理:
USE tempdb
GO
DECLARE @sql NVARCHAR(MAX)
IF NOT EXISTS(SELECT 1 FROM sys.procedures AS p WHERE p.[object_id]=OBJECT_ID('Proc_Test'))
BEGIN
	SET @sql='
-- =============================================
-- Author:		yenange
-- Create date: 2019-10-24
-- Description:	测试存储过程
-- =============================================
CREATE PROCEDURE dbo.Proc_Test 
AS
BEGIN
	set nocount on
	print ''你看还行不??'';
END
' 
	EXEC(@sql);
	PRINT '添加存储过程完毕.'
END
ELSE
BEGIN
	PRINT '存储过程已存在,不作任何处理.'
END

--执行测试存储过程
EXEC Proc_Test

34,576

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧