首页 新闻 会员 周边

存储过程执行问题

0
[已解决问题] 解决于 2012-09-16 08:58
 1 alter proc  Usp_sqlLs
 2 @columnname nvarchar(50)   --判断是按哪一列排序的
 3 as
 4 begin
 5     select row_number() over(order by @columnname asc) as rnum,* from books 
 6 end
 7 
 8 
 9 declare @cl nvarchar(50)
10 select @cl='PublishDate'
11 exec Usp_sqlLs   @cl

有这么一个存储过程,排序的列是我动态输入的,为什么排序没有效果?

但是换成动态SQL语句拼接的话就能实现,求原理......

轻狂の书生的主页 轻狂の书生 | 小虾三级 | 园豆:1042
提问于:2012-09-15 19:48
< >
分享
最佳答案
0
奖励园豆:5
chenping2008 | 大侠五级 |园豆:9836 | 2012-09-15 20:31
其他回答(1)
0
select row_number() over(order by @columnname asc) as rnum,* from books 
等同于
select row_number() over(order by 'xxxxx' asc) as rnum,* from books 
@columnname在这里只是一个字符串常量,并不是你的字段名
 
向往-SONG | 园豆:4853 (老鸟四级) | 2012-09-15 21:00
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册