厌倦了键入SQL脚本例如“ SELECT TOP 10 * FROM”和其他类似脚本如何在SSMS中创建别名/快捷方式?

问题描述

在进行大量研究的同时,我继续编写通用脚本,例如“ SELECT TOP 10 * FROM”等。

有没有办法让我编写类似代码段的内容,以便当我键入“ ss” +空格/制表符时会插入“ SELECT TOP 10 * FROM”脚本?

我有很多脚本,我注意到我经常使用它们,我想为其创建一些别名...

解决方法

您可以走出SSMS并依靠设置的热键(无论您是否在SSMS中,它都会触发)。自动热键(https://www.autohotkey.com/)可用于此实现https://www.autohotkey.com/docs/Tutorial.htm#s12描述了如何实现您的确切方案。

,

虽然可以创建代码段,但选择代码段很麻烦。

它仍然需要:CTRL-K CTRL-X M <tab> S <tab>才能获得:

SELECT TOP 10 * FROM Table1并能够键入所需的表名。

摘要:

<?xml version="1.0" encoding="utf-8" ?>
<CodeSnippets  xmlns="http://schemas.microsoft.com/VisualStudio/2005/CodeSnippet">
<_locDefinition xmlns="urn:locstudio">
    <_locDefault _loc="locNone" />
    <_locTag _loc="locData">Title</_locTag>
    <_locTag _loc="locData">Description</_locTag>
    <_locTag _loc="locData">Author</_locTag>
    <_locTag _loc="locData">ToolTip</_locTag>
</_locDefinition>
    <CodeSnippet Format="1.0.0">
        <Header>
            <Title>Select</Title>
                        <Shortcut></Shortcut>
            <Description>SELECT TOP 10 * FROM ....</Description>
            <Author>?</Author>
            <SnippetTypes>
                <SnippetType>Expansion</SnippetType>
            </SnippetTypes>
            <Shortcut>select</Shortcut>
        </Header>
        <Snippet>
            <Declarations>
                                <Literal>
                                    <ID>TableName</ID>
                                    <ToolTip>Name of the table</ToolTip>
                                    <Default>Table1</Default>
                                </Literal>
            </Declarations>
            <Code Language="SQL"><![CDATA[
SELECT TOP 10 * FROM  $TableName$
]]>
            </Code>
        </Snippet>
    </CodeSnippet>
</CodeSnippets>

将其保存到(例如)“ select.snippet”,然后在“工具/代码抓取工具管理器”下导入SSMS

对我来说,尚不清楚<Shortcut>select</Shortcut>部分的价值...

根据下一个网站,快捷方式是2013年的“无法解决”: https://dba.stackexchange.com/questions/166432/shortcuts-for-code-snippets

,

不,没有办法在SQL Server中执行此操作(而且我认为在其他任何数据库中都不会)。

基本上,您正在寻找某种宏预处理,但这不是SQL语言的一部分,尽管某些数据库可能会以其脚本语言支持它,或者某些工具可能会支持它。

嗯。 。 。在我看来,您可以使用存储过程。如果您想写:

exec top10 'tablename';

然后将过程定义为:

create procedure top10 (@t nvarchar(max)) as
begin
    declare @sql nvarchar(max);
    set @sql = 'select top (10) * from [' + @t + ']';
    exec sp_executesql @sql;
end;