厌倦了输入 SQL 脚本,例如 "SELECT TOP 10 * FROM" 和其他类似的脚本。如何在 SSMS 中创建 alias/shortcut?

Tired of typing SQL scripts like "SELECT TOP 10 * FROM" and other similar scripts. How to create an alias/shortcut in SSMS?

虽然在我的工作中做了很多研究,但我一直在编写通用脚本,例如“SELECT TOP 10 * FROM”等

有没有办法让我写一些类似片段的东西,这样当我输入“ss”+Space/Tab时,它会插入“SELECT TOP 10 * FROM”脚本?

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

不,无法在 SQL 服务器中执行此操作(而且我不认为在任何其他数据库中)。

基本上,您正在寻找某种宏预处理,这不是 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;

您可以走出 SSMS 并依赖设置的热键(无论您是否在 SSMS 中,它都会触发)。 Autohotkey(https://www.autohotkey.com/) can be used for this implementation https://www.autohotkey.com/docs/Tutorial.htm#s12 描述了如何实现您的确切场景。

虽然您可以创建代码片段,但 select 代码片段很烦人。

还需要: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”,并在 'Tools/Code Snipper Manager'

下导入 SSMS

我不清楚 <Shortcut>select</Shortcut> 部分的价值...

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

我为此目的使用了 AuthoHotkey,例如我使用 ssf 作为 select * 来自。这是一个例子。

:oc:ssf::
SendInput,{Home}SELECT TOP (100) * FROM  {End} WITH (NOLOCK)^{Left 4}{Left 1}
return