繁体   English   中英

OpenRowSet中的Unicode查询

[英]Unicode Query in OpenRowSet

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

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像这样执行我的代码:

exec dbo.usp_test @p1='????????'

因此结果不正确。 OPENROWSET中是否可以解决我的问题?

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

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''

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM