小编use*_*979的帖子

获取包含 INSERT 的存储过程的“列表”,而无需命名所涉及的列

作为某些增强功能的一部分,750 多个表中添加了一个新列。现在我的问题是在将近 3000 多个存储过程中,一些旧的 INSERT 没有命名列。

有什么办法可以得到所有没有列名插入的存储过程的“列表”?

我试过了:

SELECT OBJECT_NAME(object_id)
FROM sys.sql_modules
WHERE definition LIKE '%insert into%' 
AND definition NOT LIKE '%) value%'
AND definition NOT LIKE '%)%' + CHAR(10) + '%value%'
AND definition NOT LIKE '%)%' + CHAR(13) + '%value%'
AND definition LIKE '%value%' 
Run Code Online (Sandbox Code Playgroud)

但它仍然错过了很多。

PS - 上面的查询也返回 Insert Into (ColumnNames) SELECT 场景,这是我不想要的。

sql-server stored-procedures t-sql sql-server-2016

1
推荐指数
1
解决办法
245
查看次数