Anda tidak dapat menambahkan pemicu ke tabel sistem, tetapi Anda dapat membuat pemicu DDL yang akan diaktifkan pada pernyataan ALTER PROC - contoh:
ALTER TRIGGER DDL_PROC
ON DATABASE
FOR ALTER_PROCEDURE
AS
DECLARE @data XML, @ObjectName sysname, @ParamCount int
SET @data = EVENTDATA()
SET @ObjectName = @data.value('(/EVENT_INSTANCE/ObjectName)[1]', 'sysname')
PRINT 'You have changed procedure: ' + @ObjectName
SELECT @ParamCount = COUNT(*) FROM sys.parameters
WHERE object_id = OBJECT_ID(@ObjectName)
RAISERROR('This procedure now has %i parameter(s)',0,0,@ParamCount)
GO
Saya tidak yakin bagaimana cara mendapatkan daftar parameter sebelumnya atau jika memungkinkan - ada yang tahu?
Saya setuju dengan saran Charles untuk membuat parameter baru opsional jika memungkinkan - kode yang ada tidak akan rusak dan Anda hanya perlu menemukan referensi jika Anda harus tambahkan parameter ke panggilan.
Membuat skrip database sepertinya masih jauh. Permintaan sederhana seperti berikut ini akan menemukan semua referensi ke proc Anda (dalam database Anda):
SELECT so.name, so.type_desc
FROM sys.all_objects so
JOIN sys.all_sql_modules sm ON so.[object_id] = sm.[object_id]
WHERE sm.[definition] LIKE '%<proc name>%'
Ini adalah hal yang sama, tetapi juga akan berfungsi di versi SQL server sebelumnya:
SELECT so.name, so.type
FROM syscomments sc
JOIN sysobjects so ON sc.id = so.id
where text like '%<proc name>%'
Semoga membantu,
MDD