存储过程中,select 后 order by 跟变量怎么做?

Codavid 2006-03-04 02:28:33
我想写一个存储过程,根据不同的参数,选择不同的order方式
CREATE PROCEDURE procTest1
@p1 char<--有错
AS
SELECT * from test1 order by @p1

f5时,系统说:
ORDER BY 子句所标识的第 1 个 SELECT 项包含了一个变量,该变量位于标识列位置的表达式中。只有排序依据表达式引用的是列名时,才允许在该表达式中使用变量。
     ^^^^^^

引用列名怎么做啊??
...全文
232 5 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
Codavid 2006-03-04
  • 打赏
  • 举报
回复
哈哈,谢谢!
select后为什么跟1??
wgsasd311 2006-03-04
  • 打赏
  • 举报
回复
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
Codavid 2006-03-04
  • 打赏
  • 举报
回复
楼上的是个好方法,但要是名字错了,怎么办?
wgsasd311 2006-03-04
  • 打赏
  • 举报
回复
CREATE PROCEDURE procTest1
@p1 varchar(40)
AS
exec('SELECT * from test1 order by '+@p1)
wendaocaofan 2006-03-04
  • 打赏
  • 举报
回复
不同的变量做不同的引用啊?

34,838

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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