• 首  页
  • 最新公告
  • 域名帮助
  • 空间帮助
  • 主机帮助
  • 邮局帮助
  • 数据库帮助
  • 网站建设帮助
  • 财务帮助
  • CDN加速
  • 最新公告
  • 域名帮助
  • 空间帮助
    • VPS主机
    • 虚拟主机
  • 主机帮助
    • win服务器应用及安全
    • linux服务器应用及安全
  • 邮局帮助
  • 数据库帮助
    • MSSQL数据库
    • ORACLE数据库
    • ACCESS数据库
    • MYSQL数据库
    • 数据库基础与原理
  • 网站建设帮助
    • Html语言教程
    • ASP语言程序
    • PHP语言程序
    • DIV+CSS语言程序
    • SEO优化教程
    • JAVA语言程序
  • 财务帮助
  • CDN加速
千喜网络 ---数据库帮助 ---MSSQL数据库
SQL存储过程中传入参数实现任意字段排序
发布时间:2012-12-2 14:28:23   阅读次数:

在做一个project的时候,要对表实现任意的排序,说得明白点就是这样:

在存储过程中声明一个@parameter,然后在使用查询条件后的排序,要根据我的@parameter来实现,而我这个@parameter实际传进去的就是一个字段值。

网上Google了一下,发现有这样的例子,大多数都是以普提树的多字段任意分页的存储过程结合在一起,看起来好不复杂,而我现在没必要搞分页,没有办法实现吗???

我先按常理搞了一个这样的:

select * from SiteDetailInfo where SiteBasicId = SiteId And SiteIsCheck = 1 order by  @Parameter desc

在查询分析器中运行报错:

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

好像语法上有问题,这是意料之中的,隐约记得应该加上单引号之类的,问了一下网友史帝尔,很快就丢过答案过来了,果然是有点语法上的问题.

修正如下:

create   procedure   proc_test
@fieldname   varchar(50)
as

declare   @sql   varchar(1000)
set   @sql= "update   [table]   set   "   +   @fieldname   +   "= "   +   @fieldname   +   "+1 "
exec(@sql)

go

或者:

declare   @field   varcahr(10)
update   table   (case   @field   when   "字段1名 "   then   set   字段1   =   字段1   +   1
                                                    when   "字段2名 "   then   set   字段2   =   字段2   +   1
                                                    ....   end)

网站关键词:千喜网络 云主机租用 服务器托管 CDN加速 虚拟主机 网站空间 域名注册 企业邮局 数据库
上一章:SQL改变端口后怎样再进行连接   下一章:浅析SQL 2008的Change Data Capture功能   
中华人民共和国增值电信业务经营许可证:陕B2-20100043
地址:西安市莲湖路37号省外贸大楼623室 全国统一服务热线:400-600-7112
CopyRight@2009-2012 Qianxinet.com 版权所有 西安千喜网络科技有限公司