у меня есть один динамический оператор sql, когда я выполняю этот оператор, тогда я получаю сообщение об ошибке Не удается разрешить конфликт сопоставления между "SQL_Latin1_General_CP1_CI_AS"
я использую COLLATE SQL_Latin1_General_CP1_CI_AS or COLLATE DATABASE_DEFAULT
, но все равно получаю ошибку
вот моя привязка sql
ALTER PROC SearchByJID
(
@JID VARCHAR(max),
@TrackNo VARCHAR(max),
@PageSize INT,
@PageNumber INT
)
AS
DECLARE @SQL VARCHAR(MAX)
DECLARE @Count_SQL VARCHAR(MAX)
DECLARE @RowStart INT
DECLARE @RowEnd INT
SET @PageNumber = @PageNumber - 1
SET @RowStart = @PageSize * @PageNumber + 1
SET @RowEnd = @RowStart + @PageSize - 1
SET @SQL=''
SET @Count_SQL=''
BEGIN
SET @SQL='SELECT * FROM (SELECT Row_number() OVER (ORDER BY [bbajobs].JID ) AS RowNumber,
[BBAJobs].[JID],[AccountReference] as [Acc Ref],[BBAJobs].[OEReference] as [OERef],[JobType],[JobState],
[JobShippedDate],[UPSShippingNumber],[CustomerName] [Customer Name],[ContactName] [Contact Name],[Telephone],
[JobDescription],[CallRem].[rem],[CallRem].[callStatus],[CallRem].[ShopRemarks],
CustomerNotes,ShopNotes,RecievedDate,UserName FROM dbo.BBAJobs LEFT OUTER JOIN dbo.CallRem
ON dbo.BBAJobs.JID = dbo.CallRem.jid WHERE 1<2 '
IF @TrackNo <> ''
BEGIN
SET @SQL=@SQL+' AND [bbajobs].jid IN (select jid from trackdetail WHERE TRACKNO IN(
SELECT CONVERT(VARCHAR, data) AS [JID]
FROM dbo.Split1('''+@TrackNo+''', '','')))'
END
IF ltrim(rtrim(@JID)) <> ''
BEGIN
SET @SQL=@SQL+' AND [bbajobs].jid IN (SELECT CONVERT(VARCHAR, data) AS [JID]
FROM dbo.Split1('''+@JID+''', '','')) '
END
SET @SQL=@SQL+') x WHERE RowNumber BETWEEN '+CAST(@RowStart AS VARCHAR)+' AND '+CAST(@RowEnd AS VARCHAR)
-- Get Count
SET @Count_SQL= 'SELECT COUNT(bbajobs.[JID]) FROM dbo.BBAJobs LEFT OUTER JOIN dbo.CallRem
ON dbo.BBAJobs.JID = dbo.CallRem.jid WHERE 1<2 '
IF @TrackNo <> ''
BEGIN
SET @Count_SQL=@Count_SQL+' AND bbajobs.jid IN (select jid from trackdetail WHERE TRACKNO IN(
SELECT CONVERT(VARCHAR, data) AS [JID]
FROM dbo.Split1('''+@TrackNo+''', '','')))'
END
IF ltrim(rtrim(@JID)) <> ''
BEGIN
SET @Count_SQL=@Count_SQL+' AND bbajobs.jid IN (SELECT CONVERT(VARCHAR, data) AS [JID]
FROM dbo.Split1('''+@JID+''', '',''))'
END
END
exec(@SQL+@Count_SQL)
особенно я получаю сообщение об ошибке, когда отправляю номер трека, поэтому я думаю, что здесь ошибка
IF @TrackNo <> ''
BEGIN
SET @SQL=@SQL+' AND [bbajobs].jid IN (select jid from trackdetail WHERE TRACKNO IN(
SELECT CONVERT(VARCHAR, data) AS [JID]
FROM dbo.Split1('''+@TrackNo+''', '','')))'
END
поэтому подскажите, что нужно изменить в sql, чтобы решить эту проблему.
я сделал так и решил проблему
IF @TrackNo <> ''
BEGIN
SET @SQL=@SQL+' AND [bbajobs].jid IN (select jid from trackdetail
WHERE TRACKNO COLLATE DATABASE_DEFAULT IN(
SELECT data COLLATE DATABASE_DEFAULT AS [JID]
FROM dbo.Split1('''+@TrackNo+''', '','')))'
END