区分大小写,排序规则的问题

lfh 2004-10-08 09:25:15
我在安装Sql Server2000的时候选择了“二进制排序”,安装后我建了个数据库abc,在企业管理器里点右键-->属性可以看到abc的排序规则是Chinese_PRC_CI_AS,应该是不区分大小写的。然后建表、存储过程等,其中有个存储过程Inabc,在里面定义了变量@InStr,在后面付值给它写了@Instr='fff',注意@InStr中的s,一个大写一个小写,系统提示了:必须声明变量'@Instr',不知何解。
应该如何解决?要修改数据库abc的排序规则吗?希望有详细些的解答。
还有,在查询分析器里应该用什么语句查出当前的数据库是什么排序规则?
谢谢!
...全文
254 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
zjcxc 2004-10-11
  • 打赏
  • 举报
回复
不指定排序规则的话

临时表是否区分大小写,与tempdb数据库的排序有关
数据库对象是否区分大小写,与数据库本身的排序规则有关
变量是否区分大小写,与数据库本身的排序规则有关,估计也是与tempdb数据库有关吧
zjcxc 2004-10-11
  • 打赏
  • 举报
回复
--好像存储过程中的变量是否区分大小写与数据库本身的设置无关

--看下面的测试

--创建测试的数据库
create database test collate Chinese_PRC_CS_AS --设置排序规则区分大小写
go

--切换到测试的数据库
use test
go

--创建一个测试的存储过程1
create proc p1
as
declare @A int
set @a=1
select @a
go

--调用
exec p1

--结果: 1
go

--创建一个测试的存储过程2
create proc P2 --注意是大写
as
declare @A int
set @a=2
select @a
go

--调用,注意调用用的是小写
exec p2

/*--结果:

服务器: 消息 2812,级别 16,状态 62,行 3
未能找到存储过程 'p2'。
--*/
go

--创建一个测试的存储过程3
create proc p3
as
create table #T(id int)
select * from #t
go

--调用
exec p3

/*--结果:

id
-----------

(所影响的行数为 0 行)
--*/
go

--创建一个测试的存储过程4
create proc p4
as
create table T(id int)
select * from t
drop table T
go

--调用
exec p4

/*--结果:

服务器: 消息 208,级别 16,状态 1,过程 p4,行 6
对象名 't' 无效。
--*/
go

--切换到master
use master
go

--删除测试数据库
drop database test
lfh 2004-10-11
  • 打赏
  • 举报
回复
sfsd
lfh 2004-10-09
  • 打赏
  • 举报
回复
关注
qltouming 2004-10-09
  • 打赏
  • 举报
回复
在查询分析器里应该用什么语句查出当前的数据库是什么排序规则?
答:collationproperty函数,用法查SQL帮助
lfh 2004-10-08
  • 打赏
  • 举报
回复
存储过程如下,注意变量声明中的@intUserPosId 和付值语句中的@intUserPosID,问题关键在其中的小写d和大写D,
在创建存储过程Inabc的时候,系统提示了:必须声明变量'@intUserPosID'。把 d 改为 D 就没问题了,但是我不想这样改,因为我不想它区分大小写。

CREATE PROCEDURE Inabc
@strUserCode varchar(20)
AS
declare @intUserPosId varchar(32)
declare @intFlag int
select @intFlag=0
select @intUserPosID=reg_position from ddd where reg_code=@strUserCode
if exists(select PerL_ID from ccc where del_Flag=0 and (RegA_Code='reg_position' and RegA_Value=@intUserPosID) and Per_Code in (SELECT abc.Per_Code FROM abc INNER JOIN abc a ON abc.Per_FatherID = a.Per_ID where a.Per_Code='bbb' or abc.Per_Code='Admin'))
begin
select @intFlag=1
end

select @intFlag as abc
GO
General521 2004-10-08
  • 打赏
  • 举报
回复
study....
Rewiah 2004-10-08
  • 打赏
  • 举报
回复
贴全了再看
lfh 2004-10-08
  • 打赏
  • 举报
回复
是在创建存储过程Inabc的时候,系统提示了:必须声明变量'@Instr'
张海霖 2004-10-08
  • 打赏
  • 举报
回复
是不是说数据排序不区分大小写,而汴梁还是要区分的。
我猜的,我也不清楚。

27,579

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 应用实例
社区管理员
  • 应用实例社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧