sp_executesql的:过程需要类型的参数“@statement 'NTEXT/NCHAR/nvarchar的'

sp_executesql的:过程需要类型的参数“@statement 'NTEXT/NCHAR/nvarchar的'

问题描述:

这里就是我想要做的事:sp_executesql的:过程需要类型的参数“@statement 'NTEXT/NCHAR/nvarchar的'

EXECUTE sp_executesql 
    'select * from AccessOrganizationSettings where OrganizationSys = @OrganizationSys', 
    N'@OrganizationSys nvarchar(250)', 
    @OrganizationSys = '805408' 

但我得到这个错误:

Procedure expects parameter '@statement' of type 'ntext/nchar/nvarchar'

不确定我做错了什么。

+4

'EXEC sys.sp_executesql N'select ...',...,@OrganizationSys = N'805408';' –

如错误所述,您需要nvarchar而不是varchar。尝试:

EXECUTE sp_executesql 
    N'select * from AccessOrganizationSettings where OrganizationSys = @OrganizationSys', 
    N'@OrganizationSys nvarchar(250)', 
    @OrganizationSys = N'805408' 

N使得字符串的nvarchar数据类型。

+0

啊好的!我花了几秒钟的时间盯着你的答案,看看我的查询和你的查询之间的区别。我错过了第一个N.(我会尽快回答它的答案) –

+2

@CaseyCrookston *所有*'N's重要,不只是第一个。你应该总是为任何'nvarchar'字符串文字包含'N'前缀。 –