2009-09-22 46 views
0

我們正試圖創建一個存儲過程,但我們遇到了以下錯誤消息:排序規則衝突,同時爲變量賦值

Cannot resolve the collation conflict between "SQL_Latin1_General_CP1_CI_AS" and "Latin1_General_CI_AS" in the equal to operation. 

在33行出現此錯誤,其內容如下:

SET @MINTIME = (SELECT CONVERT(varchar,DATEADD(MONTH,-1,GETDATE()),112)); 

有誰知道如何解決這個問題?

+0

顯示我們@mintime聲明。 – RBarryYoung

+0

DECLARE @MINTIME AS VARCHAR(50); – George

回答

3

通常情況下,這個工程

SET @MINTIME = 
(SELECT CONVERT(varchar,DATEADD(MONTH,-1,GETDATE()),112)) COLLATE DATABASE_DEFAULT; 

或者

只適用於列DEFS,例如在表變量: DECLARE @MINTIME VARCHAR(??)COLLATE DATABASE_DEFAULT

這是因爲您在某處存在不匹配,例如@mintime歸類(如DECLARE時間)不匹配數據庫歸類(用於轉換爲varchar)

編輯:你確定它是這條線嗎? 錯誤通常發生在字符串比較中。在一個簡單的分配上,右手錶達的整理將被強制進入左手整理。

隨想:33行,這就是1號線「CREATE PROC」通常和排除SET ANSI東西等時添加右鍵單擊,在SSMS編輯

+0

不幸的是,這會導致完全相同的錯誤消息。你有什麼其他的建議? – George

+0

我懷疑是另一種方式:@mintime可能不使用數據庫默認排序規則 – RBarryYoung

+0

@iar:try SQL_Latin1_General_CP1_CI_AS或Latin1_General_CI_AS – gbn