logo SQL Prompt教程 我也要发布文档

SQL语法提示工具SQL Prompt教程:使用SQL Prompt重构批处理或对象(上)


SQL Prompt是一款实用的SQL语法提示工具。SQL Prompt根据数据库的对象名称、语法和代码片段自动进行检索,为用户提供合适的代码选择。自动脚本设置使代码简单易读——当开发者不大熟悉脚本时尤其有用。SQL Prompt安装即可使用,能大幅提高编码效率。

点击下载SQL Prompt免费版

Louis Davidson揭示了一些有用的提示功能,可在开发过程中重构单个代码块或模块,这将提高代码质量,减少繁琐的工作,使测试更简单,有时甚至是全部三种功能。

SQL Prompt是我一直使用的工具,用于代码完成和代码格式化任务,以至于在没有它的情况下编写查询感觉非常错误。用JOIN编写SQL语句,它会自动建议ON条件。在ORDER BY或者GROUP BY子句中,它有助于选择分组列。审查一些丑陋的代码(也许是自己写的)用您喜欢的样式很好地格式化它。

但是,SQL Prompt具有许多其他功能,这些功能我很少用,但在需要的时候非常有用。本教程演示了SQL Prompt如何帮助“小规模” SQL重构任务,该任务的范围通常仅限于您在本地工作的单批代码或代码对象。这些任务直接在SSMS查询窗口中执行,并且可以帮助您以各种方式重构代码,这些方式在测试存储过程和对存储过程进行故障排除时非常有用。这篇文章主要是教程的上半部分内容~

本文中的所有示例均从WideWorldImporters示例数据库的新恢复的副本开始。

重命名别名/变量

提示:将光标置于别名或变量上,从上下文菜单中选择“重命名别名/变量”,或按F2键,然后输入新名称。当前批次或对象中的所有匹配项均已更改。

有时,程序员为变量或别名选择了较差的名称。我已经看到@I,如果仔细检查,可以更有效地将其称为@EnableSystemFunctionsSetting。我们一次又一次地感到内疚,当您需要快速进行编码时,标准往往会失效,而我们常常忘记暂停,并仔细考虑可能使用的最佳名称。

下列代码显示了一个应用程序。Cities$List存储过程后面是第二个批处理(只是为了演示这种重命名的工作方式)。假设您想将@CityName重命名为@CityNameLike,使用户清楚的知道他们可以传递LIKE表达式。

CREATE OR ALTER PROCEDURE Application.Cities$List
      @CityName nvarchar(50) = '%', @CityNameUpperCaseFlag bit = 0
  AS
      DECLARE @CityNameValue nvarchar(50);
      SELECT Cities.CityID,
             CASE WHEN @CityNameUpperCaseFlag = 1
                      THEN UPPER(Cities.CityName)
                  ELSE Cities.CityName
             END,
             Cities.Location
      FROM   Application.Cities
      WHERE  Cities.CityName LIKE @CityName;
  GO
  DECLARE @CityName int;
  SELECT  @CityName
  GO

清单1

当然,一种久经考验并几乎是正确的方法是查找并替换(Ctrl + H)。但是,如果您不注意,可能会导致一些参数意外地重命名为@CityNameLikeUpperCaseFlag,并且在当前对象的预期范围之外重命名参数和变量。

使用SQL Prompt重构批处理或对象

图1

使用SQL Prompt的重命名别名/变量重构,您可以更精确地执行此任务。突出显示@CityName的出现项,或将光标放在其上,它仅突出显示当前范围内@CityName的另一确切出现项。与查找和替换不同,它不会突出显示任何不完全匹配的内容,并且不会触及第二批。

使用SQL Prompt重构批处理或对象

图2

现在,右键单击选择重命名别名/变量,或按F2,然后在矩形框内看到变量时,键入替换名称CityNameLike,然后按Enter以“提交”更改名称。如果输入有误,则可以使用单个“撤消”(Ctrl-Z)修复损坏。

接下来,您可能需要将Cities表的别名更改为较短的名称,例如c。如果单击的任何实例Cities,则SQL Prompt将突出显示其他实例,但由于Cities不是别名,因此SQL Prompt的Rename Alias / Variable方法将不起作用。不过,这很容易解决。只需建立Cities一个别名,然后突出显示它并点击F2即可

使用SQL Prompt重构批处理或对象

图3

替换Cities为c,单击Enter,新代码将如下所示。

CREATE OR ALTER PROCEDURE Application.Cities$List
    @CityNameLike nvarchar(50) = '%', @CityNameUpperCaseFlag bit = 0
AS
DECLARE @CityNameValue nvarchar(50);
 
SELECT c.CityID,
       CASE WHEN @CityNameUpperCaseFlag = 1
                THEN UPPER(c.CityName)
            ELSE c.CityName
       END,
       c.Location
FROM   Application.Cities AS c
WHERE  c.CityName LIKE @CityNameLike;
GO

查找未使用的变量和参数

提示:在查询窗口中,可以选择突出显示代码块,从SQL Prompt菜单中选择“查找未使用的变量和参数”,或按(Ctrl B,Ctrl F),然后Prompt将在所有未使用的变量或参数下划线。

在图3中,您可以在下面看到一条绿色的波浪线@CityNameValue(和过程名称,稍后再介绍)。这是SQL Prompt代码分析功能,可提醒我们注意已声明但从未使用过的变量。

使用SQL Prompt重构批处理或对象

图4

即使您关闭了此功能(在使用非常大的脚本时,有时也会这样做),您仍然可以使用“查找未使用的变量和参数”(Ctrl B + Ctrl F),并且在@CityNameValue变量下方会看到相同的绿色波浪线,和相同的消息。让我们简单地删除该变量声明,然后继续进行此代码的更多改进。

本教程内容尚未完结,后面将更新下半部分内容,包括“使用代码片段进行重构”和“内联执行:重构以进行测试”,感兴趣的朋友可以下载SQL Prompt试一下哦~

相关内容推荐:

SQL Prompt系列教程>>>


想要购买SQL Prompt正版授权,或了解更多产品信息请点击“咨询在线客服”

Zend-Studio-640×220.png