问题描述
在进行大量研究的同时,我继续编写通用脚本,例如“ 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;