请教个问题,关于存储过程的

[复制链接]
查看11 | 回复6 | 2010-3-1 11:19:49 | 显示全部楼层 |阅读模式
需要通过一个web来检索数据,通过一些textbox checkbox等来获取筛选条件,然后把这些作为参数传给一个存储过程,其中一个条件是排序字段;
我在存储过程中有 order by @ordersting,然后sql返回消息说有语法错误,order by的字段必须是存在的列名;
@orderstring的取值方式是通过radiobuttonlist来获得的,最终的值肯定是列名之一;
我该如何写才能实现我的要求
回复

使用道具 举报

千问 | 2010-3-1 11:19:49 | 显示全部楼层
自己拼接sql语句后再执行
回复

使用道具 举报

千问 | 2010-3-1 11:19:49 | 显示全部楼层
declare @strsql nvarchar(2000)
.......
set @strsql=@strsql+@strOrderByString
exec @strsql
回复

使用道具 举报

千问 | 2010-3-1 11:19:49 | 显示全部楼层
最初由 luoshulin 发布
[B]自己拼接sql语句后再执行 [/B]

现在就是直接拼接的sql语句,觉得不好看,而且以后改动的时候还得去程序改,所以想干脆做个proc放到数据库里
回复

使用道具 举报

千问 | 2010-3-1 11:19:49 | 显示全部楼层
最初由 eastsun 发布
[B]declare @strsql nvarchar(2000)
.......
set @strsql=@strsql+@strOrderByString
exec @strsql [/B]

谢谢
回复

使用道具 举报

千问 | 2010-3-1 11:19:49 | 显示全部楼层
我也碰过这种问题,当时采用了:。。。exec @strsql。。。
好象只能用这个方法。
回复

使用道具 举报

千问 | 2010-3-1 11:19:49 | 显示全部楼层
最初由 BennyNi 发布
[B]
我在存储过程中有 order by @ordersting,然后sql返回消息说有语法错误,order by的字段必须是存在的列名;
[/B]

这种写法数据库在分析时的结果是这样的(假设@ordersting = 'xx'):
order by 'xx'
这当然是不对的吧!引号内的这个列名被数据库当作一个值处理了!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行