簡體   English   中英

將NVARCHAR值傳遞給存儲過程

[英]passing NVARCHAR value to stored procedure

我有一個帶有NVARCHAR參數的存儲過程,如下所示:

ALTER PROCEDURE [dbo].[hr_Companies_GetByIDAndName] 
    @CompanyName NVARCHAR(100),
    @Lang int = 1
AS

Select * from companies
where
(@Lang = 1 AND NameLang1 LIKE @CompanyName )
    OR
    (@Lang = 2 AND NameLang2 LIKE  @CompanyName )
    )

我想為其提供一個nvarchar值,所以我正在使用以下語法:

DBHelper _helper = new DBHelper();
_helper.StoredProc = "hr_Companies_GetByIDAndName";               
_helper.AddParam("@CompanyName", "N'%" + company.Trim() + "%'", SqlDbType.NVarChar);
_helper.AddParam("@Lang", Language, SqlDbType.Int);
return _helper.GetTable();

但是它返回null

當我運行不帶存儲過程的查詢時, select * from companies where companyname like N'%mycompanyname%' ,它將返回結果。

如何使用DBHelper addparameter添加N

我不知道您的DBHelper會做什么,而是將nvarchar類型值傳遞給存儲的proc,這是標准方法:

var param = new SqlParameter("@CompanyName ", SqlDbType.NVarChar, size)
param.Value = company.Trim();

上面的第三個參數是使用nvarchar(size)語法在sproc中聲明的nvarchar參數的nvarchar(size) 如果它是nvarchar(max)則使用-1。

另請注意,您無需使用“ N%”前綴。 ADO.Net層會處理它。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM