数据库查询结果的动态排序(4)
2024-07-21 02:10:47
供稿:网友
 
假设我们把更多的货主加入到表,如listing 4所示(shipperid列有identity属性,sql server自动为该列生成值)。 
【listing 4:向shippers表插入一些记录】 
insert into shippers values('shipper4', '(111) 222-9999') 
insert into shippers values('shipper5', '(111) 222-8888') 
insert into shippers values('shipper6', '(111) 222-7777') 
insert into shippers values('shipper7', '(111) 222-6666') 
insert into shippers values('shipper8', '(111) 222-5555') 
insert into shippers values('shipper9', '(111) 222-4444') 
insert into shippers values('shipper10', '(111) 222-3333') 
  现在调用存储过程,指定shipperid作为排序列: 
exec getsortedshippers 'shipperid' 
  表一显示了存储过程的输出。shipperid等于10的记录位置错误,因为这个存储过程的排序输出是字符排序,而不是整数排序。按照字符排序时,10排列在2的前面,因为10的开始字符是1。 
表一:记录排序错误的查询结果 
shipperid companyname phone 
1 speedy express (503) 555-9831 
10 shipper10 (111) 222-3333 
2 united package (503) 555-3199 
3 federal shipping (503) 555-9931 
4 shipper4 (111) 222-9999 
5 shipper5 (111) 222-8888 
6 shipper6 (111) 222-7777 
7 shipper7 (111) 222-6666 
8 shipper8 (111) 222-5555 
9 shipper9 (111) 222-4444