当我在兼容级别为 130 的 SQL Server 2016 数据库上运行此 T-SQL 时,出现错误:
DECLARE @myVariable int = 4;
EXEC sys.sp_addextendedproperty
@name = N'MyExtendedProperty',
@value = FORMAT( @myVariable, 'd', 'en-US' ),
@level0type = N'SCHEMA', @level0name=N'dbo',
@level1type = N'TABLE' , @level1name=N'MyTable';
错误信息如下,SSMS@myVariable
在FORMAT
函数调用中突出了使用:
消息 102,级别 15,状态 1,第 5 行
“@myVariable”附近的语法不正确
但是,如果我使用中间变量,SQL 会成功运行:
DECLARE @myVariable int = 4;
DECLARE @myVariableText nvarchar(10) = FORMAT( @myVariable, 'd', 'en-US' )
EXEC sys.sp_addextendedproperty
@name = N'MyExtendedProperty',
@value = @myVariableText,
@level0type = N'SCHEMA', @level0name=N'dbo',
@level1type = N'TABLE' , @level1name=N'MyTable';
我确实想知道是否FORMAT
或者sp_addextendedproperty
是一个神奇的函数,比如RAISERROR
它需要第一个参数是字符串文字(不允许使用表达式),但是文档sp_addextendedproperty
没有提到对@value
参数的任何限制:
[ @value= ] { 'value'}
是要与属性关联的值。值为
sql_variant
,默认值为 NULL。value 的大小不能超过 7,500 字节。