【发布时间】:2023-03-25 02:37:01
【问题描述】:
我是第一次使用 SqlServer,在我们创建过程的每一个脚本中,都有如下代码块来删除已经存在的过程:
IF EXISTS (SELECT *
FROM information_schema.routines
WHERE routine_name = 'SomeProcedureName'
AND routine_type = 'PROCEDURE'
BEGIN
DROP PROCEDURE SomeProcedureName
END
//then the procedure definition
要停止在每个文件中剪切和粘贴此样板代码,我想将此代码放在其自己的存储过程中,以便脚本看起来像这样:
DropIfRequired('SomeProcedureName')
//then the procedure definition
我的解决方案是:
CREATE PROCEDURE DropIfRequired
(
@procedureName varchar
)
AS
IF EXISTS (SELECT * FROM information_schema.routines
WHERE routine_name = @procedureName
AND routine_type = 'PROCEDURE')
BEGIN
DROP PROCEDURE @procedureName
END
然后我得到以下错误:
消息 102,级别 15,状态 1,过程 DeleteProcedure,第 10 行 '@procedureName' 附近的语法不正确。
任何想法如何做我想做的事?
【问题讨论】:
-
此this answer 了解更多解决方案。
标签: sql-server tsql