我正在使用SQL Server 2008。 这是我的表定义。
create table myTable (nid int identity(1,1),content nvarchar(max));
当我执行这两个查询时
insert into myTable(content)values(N'हिंदी में परीक्षण');
update myTable set content=N'हिंदी में परीक्षण' where nid=1;
在表格中插入/更新其他语言数据。我想在存储过程中执行相同的操作。这是我的存储过程的定义。
create proc myProc
@nid int,
@content nvarchar(max)
as
begin
update myTable set content=@content where nid=@nid;
end
它只是不起作用列更新了?????????????值。我该怎么办。我试着这样做
update myTable set content=N''+@content where nid=@nid;
但这不起作用。请帮助。
我忘记了一件事
exec myProc 1,N'हिंदी में परीक्षण'
这确实有效当然问题是我从asp .net web应用程序发送数据,我使用这种语法。
public void myProcCall()
{
dbcommand = db.GetStoredProcCommand("myProc", nid, content);
ds = db.ExecuteDataSet(dbcommand);
}
因此,当我从Web应用程序发送其他语言内容时,该值将更新为??????????。我是否必须在我的asp .net代码中进行一些更改。
答案 0 :(得分:1)
这将有效
EXEC myProc 1, N'हिं में पदी रीक्षण'
这不会
EXEC myProc 1, 'हिं में पदी रीक्षण'
Ergo,参数以非unicode
的形式发送您需要确保填充参数的代码发送unicode