Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 вопрос по запросу  [new]
dimakz
Member

Откуда:
Сообщений: 1574
в процедуре есть такой запрос:

set @sql = '-- Выборка данных 
select convert(varchar(10), DATE_TIME, 120) start_date,
case when len(cast(datepart(hh,DATE_TIME) as varchar)) = 2 then cast(datepart(hh,DATE_TIME) as varchar)
else ''0'' + cast(datepart(hh,DATE_TIME) as varchar) end hour
, SUB_ID2
,case when SUB_ID2 like MN+'%' then tier else ''unk'' end tier
 from table_C left join _DIC_IW on  SUB_ID2 like MN+'%'
where DATE_TIME >= ''' + convert(varchar(10), @Date, 20) + ' 00:00:00.000''
and DATE_TIME <= ''' + convert(varchar(10), @Date, 20) + ' 23:59:59.998''
' 
exec sp_sqlexec @sql


выдает ошибку при компиляции, ругается на строку
,case when SUB_ID2 like MN+'%' then tier else ''unk'' end tier


Msg 402, Level 16, State 1, Procedure sp_STAT_TC_MS, Line 110
The data types varchar and varchar are incompatible in the modulo operator.

хотя сам запрос работает (без процедуры если запускать)
11 май 12, 13:57    [12536241]     Ответить | Цитировать Сообщить модератору
 Re: вопрос по запросу  [new]
Glory
Member

Откуда:
Сообщений: 104751
И вы тоже не видите в разметке, как у вас строка побилась ?
' ...SUB_ID2 like MN+'%' where DATE_TIME >='
11 май 12, 14:01    [12536284]     Ответить | Цитировать Сообщить модератору
 Re: вопрос по запросу  [new]
is_me
Member

Откуда: Нижний Новгород
Сообщений: 165
dimakz,

проблема с ' '' '
нужно вот так

declare @sql1 nvarchar(max)
set @sql1 = 'select top 1 * from tTable where pole like ''407%'''
exec (@sql1)


вместо

declare @sql1 nvarchar(max)
set @sql1 = 'select top 1 * from tTable where pole like '407%''
exec (@sql1)
11 май 12, 16:30    [12537798]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить