я "м пытается передать NVARCHAR параметр в моей процедуре магазина. Хранимая процедура предполагают, чтобы найти всех поставщиков, что отвечает указанным критериям. Единственная проблема у меня есть, что я пытаюсь передать критерии, которые содержат строку на иврите.Как передать параметр хранимой процедуры SQL nvarchar с помощью иврита?
ALTER PROCEDURE [dbo].[FindSupplier]
-- Add the parameters for the stored procedure here
@search_criteria nvarchar(100) = ''
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
DECLARE @hebrew as bit = 0
IF @search_criteria LIKE '%[אבגדהוזחטיחכךילמנפףערקשת]%'
BEGIN
SET @hebrew = 1
END
IF @hebrew = 0
BEGIN
SELECT comn020.t_suno 'Supplier Code'
, hebcom020.t_nama 'Supplier Name1'
, hebcom020.t_namb 'Supplier Name2'
FROM com020 WITH (NOLOCK)
INNER JOIN hebcom020 WITH (NOLOCK)
ON hebcom020.t_suno = com020.t_suno
WHERE (LTRIM(RTRIM(com020.t_suno)) LIKE N'%' + @search_criteria + '%')
OR (SOUNDEX(LTRIM(RTRIM(com020.t_suno))) LIKE N'%' + SOUNDEX(@search_criteria) + '%')
OR (LTRIM(RTRIM(hebcom020.t_nama)) LIKE N'%' + @search_criteria + '%')
OR (SOUNDEX(LTRIM(RTRIM(hebcom020.t_nama))) LIKE N'%' + SOUNDEX(@search_criteria) + '%')
OR (LTRIM(RTRIM(hebcom020.t_namb)) LIKE N'%' + @search_criteria + '%')
OR (SOUNDEX(LTRIM(RTRIM(hebcom020.t_namb))) LIKE N'%' + SOUNDEX(@search_criteria) + '%')
END
ELSE /* hebrew */
BEGIN
SELECT com020.t_suno 'Supplier Code'
, hebcom020.t_nama 'Supplier Name1'
, hebcom020.t_namb 'Supplier Name2'
FROM com020 WITH (NOLOCK)
INNER hebcom020 WITH (NOLOCK)
ON hebcom020.t_suno = com020.t_suno
WHERE hebcom020.t_nama Collate Hebrew_CI_AI LIKE N'%' + @search_criteria + '%' Collate Hebrew_CI_AI
OR (LTRIM(RTRIM(hebcom020.t_namb)) LIKE N'%' + @search_criteria + '%')
END
END
Когда я пытаюсь передать что-то вроде exec FindSupplier 'ב'
, SQL-сервер распознает char 'ב' как '?'
Ваша помощь будет высоко оценен
UPD: exec FindSupplier N'ב'
работал
UPD2: В Visual Studio необходимо запустить зр со следующей строкой
="exec FindSupplier N'" & Parameters!search_criteria.Value & "'"
Вот связанный с этим вопрос ... http://stackoverflow.com/questions/3438483/hebrew-encoding-in-sql-server2005 – Jason
Джейсон, это не тот же случай ... Мне нужно обрабатывать параметр sp, а не объявленную переменную – IgorM
Это не работает? exec FindSupplier N 'ב' – Jason