首页 > 开发 > 综合 > 正文

数据库查询结果的动态排序(3)

2024-07-21 02:10:47
字体:
来源:转载
供稿:网友
为了避免出现这种转换错误,我们可以尝试把shipperid转换成varchar数据类型。采用这种方法之后,nvarchar将作为最高优先级的数据类型被返回。listing 3显示了修改后的getsortedshippers存储过程。



【listing 3:用列名字作为参数,第二次尝试】


alter proc getsortedshippers

@colname as sysname

as


select *

from shippers

order by

case @colname

when 'shipperid'

then cast(shipperid as varchar(11))

when 'companyname'

then companyname

when 'phone'

then phone

else null

end





  现在,假设我们再把三个列名字中的任意一个作为参数调用存储过程,输出结果看起来正确。看起来就象指定的列正确地为查询输出提供了排序标准。但这个表只有三个货主,它们的id分别是1、2、3。
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表