SQL在带有变量的存储过程中使用Unicode N

SQL在带有变量的存储过程中使用Unicode N,sql,unicode,asp-classic,Sql,Unicode,Asp Classic,我有下面的存储过程,我在寻找正确的语法,这样我就可以在Comments列中播放Comments值,前面是N,前面是Unicode的值,我需要保存俄文字符值 因此,目前,comments值是这样传递的 @评论 我想做什么 N@comments但不起作用 ALTER PROCEDURE [dbo].[spInsertContactUs] ( @title VARCHAR(20) = default, @forename VARCHAR(100) = default, @surname VARCHAR

我有下面的存储过程,我在寻找正确的语法,这样我就可以在Comments列中播放Comments值,前面是N,前面是Unicode的值,我需要保存俄文字符值

因此,目前,comments值是这样传递的

@评论

我想做什么

N@comments但不起作用

ALTER PROCEDURE [dbo].[spInsertContactUs]
(
@title VARCHAR(20) = default,
@forename VARCHAR(100) = default,
@surname VARCHAR(100) = default,
@gender VARCHAR(50) = default,
@address1 VARCHAR(100) = default,
@address2 VARCHAR(100) = default,
@city VARCHAR(50) = default,
@county VARCHAR(50) = default,
@country INT = default,
@zipcode VARCHAR(50) = default,
@email VARCHAR(200) = default,
@comments NVARCHAR(MAX) = default,
@mailinglist BIT = default,
@address3 VARCHAR(100) = default,
@dateOfBirth datetime = default
)
AS
SET NOCOUNT ON

INSERT INTO tblContactUs (
dateAdded,
title,
forename,
surname,
gender,
address1,
address2,
city,
county,
country,
zipcode,
email,
comments,
mailinglist,
address3,
dateOfBirth)
VALUES (
getdate(),
@title,
@forename,
@surname,
@gender,
@address1,
@address2,
@city,
@county,
@country,
@zipcode,
@email,
@comments,
@mailinglist,
@address3,
@dateOfBirth
)

SET NOCOUNT OFF
RETURN

)

在表的字段和存储的过程参数中使用
Nvarchar
数据类型

已添加


请参阅链接,也许这会对您有所帮助。

这很有效。我自己想出来的:

declare @a nvarchar(50)
set @a =N'تست'

exec('INSERT INTO [dbo].[tblP] ([productVal],[name],[month])  VALUES ( 9, '+'N'''+@a+''',1)')
INSERT INTO [dbo].[tblP] ([productVal],[year],[month])  VALUES ( 9, N'تست',1)
Command.Parameters.Add("@prc", SqlDbType.NVarChar).Value = strPrc; 

您需要将SqlDbType更改为NVarChar。您还需要将字段改为Nvarchar字段,将存储过程也改为Nvarchar字段。

另外,用“sp***”命名存储过程是个坏主意在SQL Server中,因为查询分析器总是搜索系统存储的进程(如果它有命名约定)。@JNK有这种行为的是
sp_u
而不是
sp
。@Martin-我以为只需要sp…但你是对的!好的,很高兴知道!我已经更新了我的答案。嘿,Igor,是的,正如您在上面的存储过程中看到的,I am I.e@comments NVARCHAR(MAX)=默认值,但不知道表中的字段是什么?是的,我将其更改为NVARCHAR(MAX)所以你说,当我使用NVARCHAR时,插入到DB@StevieB-N仅在unicode格式的单引号中表示以下内容。除了代码外,请提供一些解释。