【发布时间】:2012-01-04 18:05:51
【问题描述】:
我正在开发一个使用 VS 2010 - ASP.Net (C#) 开发的多语言 Web 应用程序。
例如,如果我使用没有存储过程的简单插入语句,我可以毫无问题地插入它
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
感谢回复。
【问题讨论】:
-
存储过程看起来不错 - 你能向我们展示你是如何从你的 C# 代码调用这个存储过程的吗?另外,作为旁注:它是 storeD 过程(最后有一个 D) - SQL Server 中的 STORED - 它没有什么可做的做一个“商店”......
-
@marc_s:感谢您注意到这些错别字。存储过程工作正常,现在我删除并重新创建了存储过程,现在它像魅力一样工作......一部分问题已解决,另一部分是我们是否需要将 N 放入 SP,因为我们必须将其放入简单的 SELECT、INSERT和 UPDATE 语句来获得正确的。
-
我改写他的问题:要显示字符串文字是 unicode,我们在它前面加上 N:
N'الحمدلله رب العالمین'现在我们必须用什么语法来显示 @variable 是 unicode?span>
标签: asp.net sql-server-2008 stored-procedures unicode