[英]How to get faster result by using this Stored Procedure in SQL server 2008?
[英]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.