2015-12-11 141 views
1

我正在使用SQL Server 2012及其Management Studio。参数是否必须匹配案例

我在现有数据库中添加模式,并且存在有关参数的问题。我注意到在一个存储过程页面上,这个人有一个参数:@PersonID int,

当我向下滚动页面时,他调用参数的次数很多时,他将其称为@personid

这是否实际上在功能或性能方面有所差异,或者保持它是否正确?

这同样适用于调用表时。他保存为“Support.ErrorLog”一张桌子,但他在程序调用它,如下:

insert into [support].[errorlog]... 
+2

案例了解更多关于整理只是物质和它对参数没有影响。 SQL服务器中的SQL语法不区分大小写'@ Person'将等于'@ person'。表名相同等 –

回答

1

TLDR;除非整理级别设置为忽略大小写敏感性,否则大小写敏感性至关重要。在功能和性能方面没有关系。

如果有问题的代码正在工作并且正在使用中,则似乎数据库排序规则级别设置为不区分大小写。

您可以通过运行下面的查询

SELECT CONVERT (varchar, SERVERPROPERTY('collation')); 

像我的服务器实例的特定数据库验证这一结果是

SQL_Latin1_General_CP1_CI_AS 

这里_CI_指不区分大小写。

如果这是大小写敏感的值会像

SQL_Latin1_General_CP1_CS_AS 

,如果您使用的是区分大小写的排序规则,您可以在数据比较这个优秀的MS knowledge base

+1

这是迂腐和无关的问题,但我迂腐,所以不能指出[你应该总是指定一个长度时声明,或转换为varchar](http:// sqlblog .COM /博客/ aaron_bertrand /存档/ 2009/10/09 /坏习惯,对开球声明,VARCHAR,而无需-length.aspx)。在您使用它的上下文中使用的默认长度是32,因此您会截断一些排序规则 - 例如, 'SELECT name,CONVERT(VARCHAR,Name)FROM :: fn_helpcollat​​ions()WHERE name <> CONVERT(VARCHAR,Name);' – GarethD