动态创建丢弃存储过程脚本

Pan*_*kaj 0 sql-server sql-server-2005 sql-server-2008

我想动态创建一个Drop/Create Script.为此,我可以如下计算创建部分.

SELECT definition FROM sys.sql_modules
Run Code Online (Sandbox Code Playgroud)

我的查询 - 你能为Drop Stored Proc Part 提出一些建议......

我正在为存储过程尝试创建/删除脚本

Aar*_*and 5

DECLARE @proc NVARCHAR(511); -- presumably a parameter
SET @proc = N'dbo.sp_help_job';


DECLARE @sql NVARCHAR(MAX);

SELECT @sql = N'DROP PROCEDURE ' + @proc + ';
GO
' + definition
FROM sys.sql_modules
WHERE [object_id] = OBJECT_ID(@proc);

PRINT @sql;
-- EXEC sp_executesql @sql;
Run Code Online (Sandbox Code Playgroud)

OBJECTPROPERTYPankaj 的连接与方法的比较:

在此输入图像描述

点击放大:

在此输入图像描述

不要复制并尝试使用第二个屏幕截图中的OUTPUT.为什么你会这样做?这是SQL Server的查询参数化版本的内部表示.让我粘贴代码,这样你就不会用我想告诉你的东西做无法解释的事情:

SELECT OBJECT_NAME(m.[object_id]), m.[object_id]
FROM sys.all_sql_modules AS m
INNER JOIN sys.all_objects AS o
ON m.[object_id] = o.[object_id]
WHERE o.type = N'P';

SELECT OBJECT_NAME([object_id]), [object_id]
FROM sys.all_sql_modules 
WHERE OBJECTPROPERTY([object_id], 'IsProcedure') = 1;
Run Code Online (Sandbox Code Playgroud)

运行这些并检查分析器中的结果.我还是"错了"Pankaj?你想浪费今天每个人的时间吗?