2009-02-03 74 views
7

例如...SQL存儲過程是否區分大小寫?

ALTER PROCEDURE [dbo].[Reports_Dashboard_Get_Sav] 
    -- Add the parameters for the stored procedure here 
    @startDate datetime, 
    @endDate datetime, 
    @companyID int=null 

set @days=datediff(m,@startdate,@enddate) 
if (@days)=0 
    set @days=1 

這不是我的代碼,但如果這是大小寫敏感的則是@days不會被作爲起始日期/開始日期和結束日期/結束日期變量不匹配正確計算。 ..

回答

16

它們可以是,根據您的數據庫的排序規則。在安裝SQL Server並選擇默認排序規則時,您會注意到存在「區分大小寫」複選框。某些排序規則區分大小寫,並會影響您的查詢(和存儲過程)。

更糟糕的是,許多供應商不會在服務器上使用區分大小寫歸類來測試其產品,從而導致運行時錯誤。

+1

argh你打我 - 這是一個鏈接tho http://aspadvice.com/blogs/ssmith/archive/2007/09/30/Case-Sensitive-or-Insensitive-SQL-Query.aspx – dbones 2009-02-03 20:21:28

1

不,不是T-SQL至少...

+0

使用默認設置你是正確的。但是,如果您的服務器使用區分大小寫的排序規則,那麼您會感到驚訝。我不知道爲什麼MS會做一些(imho)非常愚蠢的事情。 – 2011-12-30 11:09:36

0

我記得,他們是不區分大小寫的SQL命令本身,我經常看到他們寫成小寫。我敢肯定,其餘的都是不區分大小寫的,因爲它是對T-SQL規範的擴展。