SQL Server中区分大小写的变量名?

SQL Server中区分大小写的变量名?,sql,tsql,stored-procedures,collation,Sql,Tsql,Stored Procedures,Collation,当我执行此SQL命令格式时:SP\u HELPTEXT Sproc1。 结果集将显示找不到存储过程“SP\u HELPTEXT”。但如果我将SQL命令替换为小写形式,如sp_helptext Sproc1,它肯定会显示Sproc1的内容 Im在我的程序中使用Sproc1,当程序执行Sproc1时,它将返回一条消息: Must declare the variable '@Variable1'. 虽然我已经声明了那个特定的变量 我有一个提示,这个问题与排序规则、区分大小写或不区分大小写的设置有

当我执行此SQL命令格式时:
SP\u HELPTEXT Sproc1
。 结果集将显示
找不到存储过程“SP\u HELPTEXT”
。但如果我将SQL命令替换为小写形式,如
sp_helptext Sproc1
,它肯定会显示Sproc1的内容

Im在我的程序中使用
Sproc1
,当程序执行
Sproc1
时,它将返回一条消息:

Must declare the variable '@Variable1'. 
虽然我已经声明了那个特定的变量

我有一个提示,这个问题与排序规则、区分大小写或不区分大小写的设置有关。有人知道怎么解决吗


出现区分大小写的变量名称的另一种情况:

CREATE PROCEDURE Foo @customerID int AS
PRINT @customerId

您有区分大小写的服务器排序规则

您的数据库有一个(如您所示)不区分大小写的排序规则,但当变量出现大小写问题时,重要的是服务器排序规则

sp_helptext
也是如此,它是在数据库主控中用小写字母定义的存储过程。因此,当您调用
SP_HELPTEXT
时,找不到它

要修复存储过程,使其在区分大小写的服务器排序规则中工作,必须确保对变量
@Variable1
的每个引用都是正确的。不是
@variable1
@variable1

使用此选项检查您拥有的服务器排序规则

SELECT SERVERPROPERTY('collation');
从:

标识符的排序规则取决于其定义的级别

  • 实例级对象的标识符(如登录名和数据库名)被指定为实例的默认排序规则
  • 数据库中对象的标识符(如表、视图和列名)被指定为数据库的默认排序规则

    例如,可以在具有区分大小写排序规则的数据库中创建两个名称仅大小写不同的表,但不能在具有区分大小写排序规则的数据库中创建。有关详细信息,请参阅

  • 变量转到标签临时存储过程临时表的标识符位于服务器实例的默认排序规则中

    当连接上下文与一个数据库关联时,可以创建变量、转到标签、临时存储过程和临时表,然后在上下文切换到另一个数据库时引用

另见

那么,变量情况不同吗?我的意思是,它可能只是没有声明(在范围内)。。创建/发布一个显示问题的最小测试用例。实例的排序规则是什么?使用下面的tsql查找排序规则?选择DATABASEPROPERTYEX('DatabaseName','Collation')SQLCollation@Hiten004,我已经提供了上面的排序规则。将Databasename更改为您的数据库@Hiten004,请参见上面的更改。服务器排序规则为Latin1\u General\u BIN。我的本地机器中有一个多数据库,我认为修改每个触发器和存储过程非常繁琐。我在使用Win XP 32位操作系统时没有遇到过这样的问题,但现在我迁移到Win 7 64位操作系统,我只希望在这个问题上没有连接。请问有没有办法修改服务器排序规则,请帮忙。谢谢。我可以更改服务器排序规则,但这并不容易。尽管我的问题已经结束,我想分享我是如何解决这个问题的,我想感谢Mikael的评论,因为它指出了根本原因。我已经遵循了这个链接的步骤,但是这个过程花了很长时间,然后我不得不停止正在进行的过程。我决定卸载SQL Server 2000,重新启动计算机,然后再次安装,在安装过程中,我选择了正确的服务器排序规则。系统存储过程(Transact-SQL)现在运行良好,无论是键入并以小写还是大写执行。@Alex,很高兴听到您已经解决了这个问题。我的“投票结束”是投票将问题转移到我无法提供的更多专业知识可以看到你的问题的地方,也许你会在那里收到不同/更好的建议。