如何在SQL Server 2016中为自定义函数配置IntelliSense参数提示
在SQL Server 2016中为自定义函数参数添加IntelliSense提示
嘿,我来教你怎么给自定义函数的参数加上IntelliSense提示,这样别人用你的函数时,输入参数就能直接看到每个参数的含义,不用翻文档啦!
SQL Server 2016的IntelliSense支持读取函数参数的**扩展属性(MS_Description)**来显示提示,所以我们只需要给每个参数添加这个属性就行,下面一步步来:
1. 先确认你的自定义函数已创建
你提供的示例函数代码如下(注释已汉化):
USE [XXXXXXXX] GO SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO -- ============================================= -- 作者: XXXXXX -- 创建日期: 2018-01-12 -- 描述: --------------------XXxxxxx -- ============================================= CREATE FUNCTION [XXX].[RemoveStringBetween] ( @string VARCHAR(MAX), -- 输入字符串 @first INT, -- 待移除子串的起始字符位置 @second INT -- 待移除子串的结束字符位置 ) RETURNS VARCHAR(max) AS BEGIN DECLARE @res VARCHAR(MAX) SET @res = (SUBSTRING(@string, 0, @first) + SUBSTRING(@string, @second + 1, LEN(@string) - @second)); RETURN @res; END GO
2. 给每个参数添加扩展属性
使用系统存储过程sp_addextendedproperty,为函数的每个参数添加MS_Description属性,把参数的含义写进去。执行下面的代码(注意替换其中的XXX为你的架构名):
-- 为@string参数添加描述 EXEC sp_addextendedproperty @name = N'MS_Description', @value = N'输入字符串', @level0type = N'SCHEMA', @level0name = N'XXX', @level1type = N'FUNCTION', @level1name = N'RemoveStringBetween', @level2type = N'PARAMETER', @level2name = N'@string'; -- 为@first参数添加描述 EXEC sp_addextendedproperty @name = N'MS_Description', @value = N'待移除子串的起始字符位置', @level0type = N'SCHEMA', @level0name = N'XXX', @level1type = N'FUNCTION', @level1name = N'RemoveStringBetween', @level2type = N'PARAMETER', @level2name = N'@first'; -- 为@second参数添加描述 EXEC sp_addextendedproperty @name = N'MS_Description', @value = N'待移除子串的结束字符位置', @level0type = N'SCHEMA', @level0name = N'XXX', @level1type = N'FUNCTION', @level1name = N'RemoveStringBetween', @level2type = N'PARAMETER', @level2name = N'@second';
3. 刷新IntelliSense缓存
添加完属性后,需要刷新SSMS的IntelliSense缓存才能生效:
- 快捷键:按下
Ctrl+Shift+R - 或者通过菜单操作:点击编辑 -> IntelliSense -> 刷新本地缓存
完成后,当你在调用[XXX].[RemoveStringBetween]函数时,输入参数的过程中,IntelliSense就会显示每个参数的含义提示啦!
另外,如果之后需要修改参数描述,可以用sp_updateextendedproperty;要删除的话用sp_dropextendedproperty,用法和sp_addextendedproperty类似,调整对应的操作即可。
内容的提问来源于stack exchange,提问作者user3165675
相关产品推荐
相关产品推荐

