数据库查询结果的动态排序(3)
类别: 数据库教程
为了避免出现这种转换错误,我们可以尝试把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。
【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。
- 上一篇: 数据库查询结果的动态排序(4)
- 下一篇: 数据库查询结果的动态排序(2)
-= 资 源 教 程 =-
文 章 搜 索