0

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

SELECT definition FROM sys.sql_modules

我的查询- 你能为Drop Stored Proc Part 推荐一些东西吗?

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

4

1 回答 1

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;

Pankaj的 join 与OBJECTPROPERTY方法的比较:

在此处输入图像描述

点击放大:

在此处输入图像描述

不要复制并尝试使用第二个屏幕截图中的 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;

运行这些并在探查器中检查结果。我仍然“错”了Pankaj吗?你想今天再浪费大家的时间吗?

于 2012-08-20T17:50:08.847 回答