яя получаю ошибку SQL преобразования типа данных VARCHAR датировать
Msg 8114, уровень 16, состояние 5, Procedure DetayliArama, линия 0 Ошибка преобразования типа данных VARCHAR в актуальном состоянии.
погрешность. Есть идеи?
Вот моя хранимая процедура:
ALTER proc [dbo].[DetayliArama]
(
@ilktarih date = null,
@sontarih date = null,
@islem nvarchar(10) = null,
@birim int = null
)
as
declare @sorgu nvarchar (max)
set @sorgu = 'select KasaID,Aciklama,Tutar,Tarih,Islem,IsDeleted,KasalarID
from KasaTable where IsDeleted=0 and KasalarID='+CONVERT(varchar(10),@birim)+' AND '
if (@islem is not null)
set @sorgu += 'Islem like ''%'[email protected]+'%'' and '
if (@ilktarih is not null)
set @sorgu+='Tarih between '+convert(datetime,@ilktarih,120)+'
and '+convert(datetime,@sontarih ,120)+' and '
set @sorgu+='1=1 order by Tarih DESC'
exec (@sorgu)
Обычно я отлаживаю подобные вещи, запуская логику как автономный sql и проверяя переменные, которые вы пытаетесь преобразовать. Если вы это сделаете, каково значение varchar, которое вы пытаетесь преобразовать в дату? – Gavin
Также вы должны использовать 'exec sp_executesql', а не' exec() '. http://sqlblog.com/blogs/aaron_bertrand/archive/2011/09/17/bad-habits-to-kick-using-exec-instead-of-sp-executesql.aspx –