Как передать строковые значения в предложении в SQL?
create PROCEDURE [dbo].[Sp_MultiSearchNews] @Topic VARCHAR(200) = NULL, @pageno int = NULL, @pagesize int = NULL AS BEGIN IF( @Topic = 'null' ) BEGIN SET @Topic = NULL; END; DECLARE @sql NVARCHAR(MAX), @sqlPaging NVARCHAR(MAX); SET @sql = 'select distinct NewsID,CompanyID,Companyname,NewsTopic,Topic from MulitSearch_PortalNews WHERE 1=1'; IF @Topic IS NOT NULL SET @sql = @sql + ' and Topic IN (' + @Topic + ')'; DECLARE @count VARCHAR(MAX); SET @count = 'select count(*) as TotalCount from ( ' + @sql + ' ) as T'; exec (' select CAST(ROW_NUMBER() OVER(ORDER BY NewsID) AS INT) AS Row, TotalRecords,NewsID,CompanyID,Companyname,NewsTopic,Topic from ( SELECT ROW_NUMBER() OVER(ORDER BY NewsID ) AS Row,('+@count+') AS TotalRecords ,* from ( '+@sql+' ) as T ) as pageResult where ( Row between (('+@pageno+' -1)* '+@pagesize+'+1) AND '+@pageno+' * '+@pagesize+' )' ); END;
Что я уже пробовал:
1) MulitSearch_Portal - это таблица представлений(views)
Тема-поле-это строка в моей таблице, сохраненная в значениях, разделенных запятыми.
Если я запущу комментарий
--Sp_MultiSearchNews '371,382',1,20
Ниже накапливается ошибка
Ошибка преобразования в тип varchar значение '371,382' в тип данных int.
я устал - набор @рубрика = заменить(@тему , ',' , "' , "') его работать некорректно.
как передать строковые значения в предложении с помощью sql. Цель процедуры - многозадачность.
Пожалуйста, помогите пожалуйста........
0x01AA
Строковые параметры должны быть заключены в кавычки. (' + @Topic + ')';
должно быть (' + ''' + @Topic + ''' + ')';
Thiyagu Arockiasamy
это не работает, сэр. нет никого, кто бы его искал.
0x01AA
Да, я вижу, я ошибся, я пропустил, что вы делаете "в". Каким типом данных является поле "Тема"?
Thiyagu Arockiasamy
Да, сэр, пожалуйста, помогите
Thiyagu Arockiasamy
Строковое поле в теме сэр
Thiyagu Arockiasamy
его значения разделены запятыми
0x01AA
Я имею в виду тип в базе данных, а не параметр SP.
Примечание: используйте кнопку ответа конкретного комментария, на который вы отвечаете. Это имеет то преимущество, что автор комментария, на который вы отвечаете, получает уведомление ;)
Thiyagu Arockiasamy
База данных также строка в теме. Тема (varchar(250), not null) - это поле моей базы данных.
Thiyagu Arockiasamy
Тема-строковое поле в базе данных