首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >OpenRowSet中的Unicode查询

OpenRowSet中的Unicode查询
EN

Stack Overflow用户
提问于 2013-04-20 13:18:23
回答 1查看 443关注 0票数 1

我有一个带有nvarchar参数的存储过程。我想使用OPENROWSET获得返回表。但是当我使用以下代码时,结果将是不正确的

代码语言:javascript
复制
Declare @ID int
Declare @sql nvarchar(max)
Declare @p1  nvarchar(8)
Set @ID=1
Set @sql='SELECT * 
FROM OPENROWSET(
    ''SQLNCLI'',
    ''DRIVER={SQL Server};'',
    ''EXEC dbo.usp_test @p1 =''''' + @p1 + ''''')'
Exec(@sql)

OPENROWSET会将我的查询转换为VARCHAR,并且不会正确执行我的过程。看起来OPENROWSET像这样执行我的代码:

代码语言:javascript
复制
exec dbo.usp_test @p1='????????'

所以结果是不正确的。OPENROWSET中有什么选项可以解决我的问题吗?

EN

回答 1

Stack Overflow用户

发布于 2015-05-23 15:34:31

使用nvarchar数据时,需要在字符串值之前添加特定字符(N),如下所示:

代码语言:javascript
复制
DECLARE @ID int
DECLARE @sql nvarchar(max)
DECLARE @p1  nvarchar(8)
SET @ID=1
SET @sql = N'SELECT * 
             FROM OPENROWSET(''SQLNCLI'',
                          ''DRIVER={SQL Server};'',
                          ''EXEC dbo.usp_test @p1 = N''' + @p1 + N''''')'
EXEC(@sql)

备注:

'''EXEC dbo.usp_test @p1 =''''' + 'p1' + ''''''等于'EXEC dbo.usp_test @p1 =''p1''时,这是错误的,应该类似于'EXEC dbo.usp_test @p1 ='p1'''''EXEC dbo.usp_test @p1 =''' + 'p1' + ''''''

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16116889

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档