1

我需要在 SQL Server 2005 中插入泰米尔语。我尝试使用InsertUpdate查询,它工作正常。在进行存储过程时,我不知道如何传递参数。

ALTER PROCEDURE [dbo].[spr_Sam]
   @Row_Id       int            = NULL,
   @Description_Ta   nvarchar(MAX)  = null
AS
BEGIN
   update tblTest set  
   Description_Ta   = @Description_Ta
   where Row_Id = @Row_Id
END

exec [dbo].[spr_Sam] 2, 'பெண்டிரேம்';

如果我执行它,它会被插入为 ???????。

exec [dbo].[spr_Sam] 2, N'பெண்டிரேம்';

如果我执行它,它会被正确插入..但我不知道如何从我的 C# 应用程序中传递那个“N”。我使用文本框来获取该Description_Ta参数。

4

2 回答 2

2

N如果您使用SqlDbType.NVarCharSQLParameter ,C# 应该自动添加

SqlDbType.VarChar你当然必须使用

状态的MSDN 文档SqlDbType(我的粗体)

VarChar:非 Unicode字符的可变长度流...

...

NVarChar:一个可变长度的Unicode字符流...

于 2013-06-19T11:20:06.247 回答
1

这是正确的更新语句:

update tblTest
    set  Description_Ta  = @Description_Ta
where Row_Id = @Row_Id;

您不需要在变量周围加上单引号。

但是,我认为帖子很混乱。要调用该过程,请使用:

exec [dbo].[spr_Sam] 2, N'பெண்டிரேம்';

要修改它:

ALTER PROCEDURE [dbo].[spr_Sam]     
    @Row_Id      int            = NULL,
    @Description_Ta  nvarchar(MAX)  = null
AS
BEGIN
    update tblTest
        set Description_Ta  = @Description_Ta
        where Row_Id = @Row_Id;
END;

定义存储过程时不应该有参数。

于 2013-06-19T10:52:31.167 回答