在SQL Server存储过程中查找ColumnNames或TableNames作为保留关键字



我的数据库中有很多存储过程。它们都被设计为返回结果集。我遵循命名标准,所有关键字都是大写,所以如果在任何SELECT语句中有任何列名或表名作为保留关键字,那么将使用大写。

我想把那些大写关键字转换成驼峰大小写。

例如我的一个实际存储过程:

CREATE PROCEDURE prc_getresults
AS
BEGIN
    SELECT ZD.Id
        ,ZD.NAME
        ,ZD.TIMESTAMP
        ,ZD.CreatedBy
    FROM ZoneDetails ZD
    INNER JOIN ZONE Z ON Z.Id = ZD.ZoneId
END

转换后我期望的代码是

CREATE PROCEDURE prc_getresults
AS
BEGIN
    SELECT ZD.Id
        ,ZD.Name
        ,ZD.TimeStamp
        ,ZD.CreatedBy
    FROM ZoneDetails ZD
    INNER JOIN Zone Z ON Z.Id = ZD.ZoneId
END

这里请查看列名称TimeStamp, Name和表Zone

大约有700多个存储过程。我无法打开每个代码并手动编辑这些。

请提供给我任何想法,以更好地实现这些变化到数据库中的所有存储过程。

您可以根据需要扩展下面的查询,

SELECT DISTINCT
       o.name AS Object_Name,
       o.type_desc
  FROM sys.sql_modules m
       INNER JOIN
       sys.objects o
         ON m.object_id = o.object_id
 WHERE m.definition In ( '%[TimeStamp]%', '%[Name]%', '%[Zone]%');

你最好下载这个奇妙的免费工具- http://www.red-gate.com/products/sql-development/sql-search/- sql server的红日搜索

然后你必须做一些工作来找到保留词- https://msdn.microsoft.com/en-us/library/ms189822.aspx

该工具为您提供了一个非常好的可见性。

最新更新