在sql server中转换语法

时间:2013-01-09 03:32:03

标签: sql-server sql-server-2012

这些陈述有什么问题?

ALTER PROCEDURE [cfg].[SetBooleanConfiguration]
@key varchar(50),
@value bit
AS
BEGIN

    exec cfg.SetConfiguration @key=@key, @datatype='Boolean', @value=CONVERT(varchar(4000),@value)

END

根据MSDN,我确信CONVERT语法写得很好。但SSMS抱怨CONVERT附近的语法不正确。怎么了?

修改

以下声明运行良好:

exec cfg.SetConfiguration @key='aa', @datatype='Boolean', @value='1'

但是,下面的陈述给了我错误:

exec cfg.SetConfiguration @key='aa', @datatype='Boolean', @value=CONVERT(varchar(4000),1)

2 个答案:

答案 0 :(得分:1)

@value的数据类型是bit?您是否尝试将其转换为varchar(4000)?

答案 1 :(得分:1)

试试这个

ALTER PROCEDURE [cfg].[SetBooleanConfiguration]
@key varchar(50),
@value bit
AS
BEGIN
    DECLARE @convertedValue varchar(1)

    SET @convertedValue=CONVERT(varchar(1),@value)

    exec cfg.SetConfiguration @key=@key, @datatype='Boolean', @value=@convertedValue

END