厌倦了输入 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
虽然在我的工作中做了很多研究,但我一直在编写通用脚本,例如“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