存储过程中,select 后 order by 跟变量怎么做?
我想写一个存储过程,根据不同的参数,选择不同的order方式
CREATE PROCEDURE procTest1
@p1 char<--有错
AS
SELECT * from test1 order by @p1
f5时,系统说:
ORDER BY 子句所标识的第 1 个 SELECT 项包含了一个变量,该变量位于标识列位置的表达式中。只有排序依据表达式引用的是列名时,才允许在该表达式中使用变量。
^^^^^^
引用列名怎么做啊??
问题点数:20、回复次数:5Top
1 楼wendaocaofan(提高自己)回复于 2006-03-04 14:36:24 得分 0
不同的变量做不同的引用啊?Top
2 楼wgsasd311(自强不息)回复于 2006-03-04 14:38:39 得分 0
CREATE PROCEDURE procTest1
@p1 varchar(40)
AS
exec('SELECT * from test1 order by '+@p1)Top
3 楼Codavid()回复于 2006-03-04 14:53:59 得分 0
楼上的是个好方法,但要是名字错了,怎么办?Top
4 楼wgsasd311(自强不息)回复于 2006-03-04 14:59:34 得分 20
CREATE PROCEDURE procTest1
@p1 varchar(40)
AS
if exists(select 1 from syscolumns where id=object_id('test1') and name=@p1)
exec('SELECT * from test1 order by '+@p1)
go
Top
5 楼Codavid()回复于 2006-03-04 21:53:12 得分 0
哈哈,谢谢!
select后为什么跟1??Top




