SQL Server中区分大小写的变量名?
当我执行此SQL命令格式时: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'. 虽然我已经声明了那个特定的变量 我有一个提示,这个问题与排序规则、区分大小写或不区分大小写的设置有
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');
从:
标识符的排序规则取决于其定义的级别
- 实例级对象的标识符(如登录名和数据库名)被指定为实例的默认排序规则李>
- 数据库中对象的标识符(如表、视图和列名)被指定为数据库的默认排序规则 例如,可以在具有区分大小写排序规则的数据库中创建两个名称仅大小写不同的表,但不能在具有区分大小写排序规则的数据库中创建。有关详细信息,请参阅
- 变量、转到标签、临时存储过程和临时表的标识符位于服务器实例的默认排序规则中 当连接上下文与一个数据库关联时,可以创建变量、转到标签、临时存储过程和临时表,然后在上下文切换到另一个数据库时引用