繁体   English   中英

如何使用SQL Server 2008中的存储过程保存Unicode文本

[英]How to save Unicode text using stored procedure in SQL Server 2008

我正在开发一个在VS 2010中开发的多语言Web应用程序 - ASP.Net(C#)。

如果我使用没有存储过程的简单插入语句,我可以毫无问题地插入它

Insert INTO Test (E,A) VALUES('Some English Text',N'الرَّحْمَٰنِ الرَّحِيمِاللَّهِ الرَّحْمَٰنِ الرَّحْمَٰنِ الرَّحِيمِاللَّهِ الرَّحْمَٰنِ الرَّحْمَٰنِ الرَّحِيمِاللَّهِ الرَّحْمَٰنِ الرَّحْمَٰنِ الرَّحِيمِاللَّهِ الرَّحْمَٰنِ')

当我为unicode数据添加N时,它工作正常。 我的问题是如何在存储过程中添加此“N”,以便它可以保存数据而不会出现任何问题。 我尝试以不同的方式放置N但存储过程会出现语法错误

下面是我正在使用的存储过程的示例。

ALTER PROCEDURE [dbo].[usp_AddNewPageDetails]
    -- Add the parameters for the stored procedure here
            @PageNameEnglish varchar(100),
            @PageNameArabic nvarchar(300),
            @PageTitleEnglish varchar(300),
            @PageTitleArabic nvarchar(900),
            @PageDescEnglish varchar(400),
            @PageDescArabic nvarchar(1200),
            @PageKeywordsEnglish varchar(120),
            @PageKeywordsArabic nvarchar(400),
            @PageBodyEnglish varchar(MAX),
            @PageBodyArabic nvarchar(MAX),
            @PageLinkPosition int,    
AS
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
    SET NOCOUNT ON;

BEGIN
    INSERT INTO pg_Pages(
    PageNameEnglish,PageNameArabic,PageTitleEnglish,PageTitleArabic,PageDescEnglish,
    PageDescArabic,PageKeywordsEnglish,PageKeywordsArabic,PageBodyEnglish,
    PageLinkPosition,PageLayoutPosition,PageBannerImageEnglish,)
    VALUES
    (@PageNameEnglish,@PageNameArabic,@PageTitleEnglish,@PageTitleArabic,@PageDescEnglish,
    @PageDescArabic,@PageKeywordsEnglish,@PageKeywordsArabic,@PageBodyEnglish,)
END

回复表示赞赏。

N是Unicode字符串文字的一部分,就像引号一样。 您可能尝试使用@parameter名称添加N,但这不是必需的(甚至是错误的)。

所以用T语法在T-SQL中调用你的SP

EXEC usp_AddNewPageDetails 'english text', N'arab text', etc.

足够了。

如果您通过SqlCommand等从.Net调用SP,则不需要其他代码,因为.Net始终使用Unicode字符串。

您能否确认表pg_Pages中列的数据类型是否适用于NVARCHAR? 如果列是VARCHAR,则unicode文本将在没有警告的情况下转换为垃圾。

暂无
暂无

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

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