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

时间:2016-07-05 12:47:41

标签: sql-server stored-procedures sql-server-2012 sql-server-2008-r2

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

我想将这些UPPERCASE关键字转换为驼峰案例。

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

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

请在此处查看列名称TimeStampName和表格Zone

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

请向我提出任何想法,以便更好地对数据库中的所有存储过程实施这些更改。

2 个答案:

答案 0 :(得分:0)

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

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\]%');

答案 1 :(得分:0)

您最好下载这个出色的免费工具 - http://www.red-gate.com/products/sql-development/sql-search/ - sql server的红日期搜索。

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

该工具为您提供了非常好的可视性。