我在SSMS(2008)中有一个自定义键盘查询快捷方式,其中包含以下t-sql ...
SELECT TOP(50) * FROM
这允许我只需输入一个表的名称,然后按我的键盘快捷键即可获得该表中的前五十个项目。我遇到的问题是我喜欢使用WITH(NOLOCK)进行查询,因此记录不会被锁定。我还没想出如何将T-SQL输入到键盘查询快捷方式,其中输入位于语句的中间。如何在不诉诸存储过程的情况下合并NoLock?
答案 0 :(得分:3)
它可能会有点混乱,但您可以使用sp_executesql
来避免依赖于定义的存储过程:
sp_executesql N'EXEC(''SELECT TOP(50) * FROM '' + @input + '' WITH(NOLOCK)'')', N'@input varchar(max)',
答案 1 :(得分:2)
我开发了 SSMSBoost ssms 加载项 - 它具有自动置换功能。 你可以在那里定义:
替换标记:“selt50”
替换字符串:“SELECT TOP(50)* FROM#WITH(NOLOCK)”
#
告诉光标将在替换完成后放置
所以,当你输入
时selt50 and_press_SPACE
selt50将被
取代 SELECT TOP(50) * FROM # WITH(NOLOCK)
光标闪烁而不是#
ssmsboost附带标准自动置换:
sel - > select * from
upd - > update # set where
deci-> declare @# int
你可以证明他们重新定义它们 它通常是一个很好的插件,带有几个非常有用的ssms工具(首选连接,代码导航等)
答案 2 :(得分:0)
在master中创建存储过程sp_Top50,并为该SP分配快捷方式。 sp_前缀使SQL Server在master中查找存储过程。
create procedure sp_Top50
@T sysname
as
declare @S nvarchar(200)
set @S = 'select top(50) * from '+quotename(@T)+ ' with(nolock)'
exec (@S)