2016-02-16 2 views
0

Я написал хранимую процедуру, как показано ниже строк кодаПроблема в процедуре (разрешить конфликт параметров сортировки)

ALTER PROCEDURE [dbo].[pr_AgentLinceseInfo_Fetch] 
AS 
BEGIN 
    IF OBJECT_ID('tempdb..#BrList') IS NOT NULL 
     DROP TABLE #BrList 

    CREATE TABLE #BrList 
    (
     AgentCode nvarchar(max) 
     ,BrokerName nvarchar(max) 
     ,LicenceID bigint 
     ,LicenceNumber nvarchar(max) 
     ,EffectiveDate datetime 
     ,ExpirationDate datetime 
     ,State nvarchar(max) 
    ); 

    INSERT INTO #BrList 
     SELECT 
      a.AgentCode AS BrokerCode, 
      sy.BrokerName, 
      L.Licence, L.LicenceNumber, 
      DateIssued AS EffectiveDate, 
      L.ExpirationDate, 
      J.JurisdictionX AS State 
     FROM 
      tbAgent AS a 
     INNER JOIN 
      tbLicence L ON L.AgentId = a.Agent 
     LEFT OUTER JOIN 
      (SELECT Jurisdiction, JurisdictionX 
      FROM tbJurisdiction) AS j ON j.Jurisdiction = 
         (CASE 
          WHEN ISNULL(L.Jurisdiction, '0') = '0' 
           THEN a.PhysicalAddressState 
           ELSE L.Jurisdiction 
         END) 
     LEFT OUTER JOIN 
      (SELECT 
       SystemUser, (FirstName + ' ' + LastName) AS BrokerName 
      FROM tbSystemUser) AS sy ON sy.SystemUser = a.SystemUser 

    SELECT * FROM #BrList 

    SELECT 
     t.*, p.ProductX, p.ProductCode 
    FROM 
     tbCompanyAgent ca 
    LEFT OUTER JOIN 
     (SELECT 
      AgentCode, BrokerName, 
      LicenceID, LicenceNumber, 
      EffectiveDate, ExpirationDate, [State] 
     FROM #BrList) AS t ON t.LicenceNumber = ca.LicenceNumber 
    INNER JOIN 
     tbProduct p ON p.Product = ca.ProductId 

    DROP TABLE #BrList 
END 

Когда мы выполняем эту процедуру, он выдает сообщение об ошибке

не удается разрешить параметры сортировки конфликт
Невозможно разрешить сопоставление конфликта между «SQL_Latin1_General_CP1_CI_AS» и «Latin1_General_CI_AI» в равном действию.

+0

http://stackoverflow.com/questions/9393207/cannot-resolve-the-collation-conflict-between-sql-latin1-general-cp1-ci-as-and – mohan111

+0

проверьте настройку tempdb –

ответ

1

Проблема заключается в наличии двух различных параметров сортировки в сравнении столбцов Вы не должны иметь два различных сортировки в столбцах, когда вы хотите сравнить их.

Пример:

Рассмотрим следующий запрос

SELECT 1 
WHERE 'a' COLLATE SQL_Latin1_General_CP1_CI_AS = 'a' COLLATE Latin1_General_CI_AI 

Что выбросит ошибку о том,

Msg 468, уровень 16, состояние 9, строка 1 Не удается разрешить сверку конфликт между «Latin1_General_CI_AI» и «SQL_Latin1_General_CP1_CI_AS» в равном действию.

может разрешаться Явно делая collation же в обоих LHS и RHS

SELECT 1 
WHERE 'a' COLLATE SQL_Latin1_General_CP1_CI_AS = 'a' COLLATE SQL_Latin1_General_CP1_CI_AS. 

Попробуйте обновить свой запрос, как этот

SELECT t.*, 
     p.ProductX, 
     p.ProductCode 
FROM tbCompanyAgent ca 
     LEFT OUTER JOIN (SELECT AgentCode, 
           BrokerName, 
           LicenceID, 
           LicenceNumber, 
           EffectiveDate, 
           ExpirationDate, 
           [State] 
         FROM #BrList) AS t 
        ON t.LicenceNumber COLLATE SQL_Latin1_General_CP1_CI_AS = ca.LicenceNumber COLLATE SQL_Latin1_General_CP1_CI_AS 
     INNER JOIN tbProduct p 
       ON p.Product COLLATE SQL_Latin1_General_CP1_CI_AS = ca.ProductId COLLATE SQL_Latin1_General_CP1_CI_AS 
+0

Где я должен писать эту процедуру. – Nida

+0

@Nida Сначала укажите из двух выбранных запросов, которые выбирают запрос, бросая ошибку –

+0

Я проверил его ... Это второй запрос перед выпиской ... – Nida

Смежные вопросы