我们常遇到一个存储过程要做都种排序的情况。通常order by 的条件只有一个固定的,这是远远不够的。需要用一个变量来替换它,而oracle有不能识别order by后面的字符串。该怎么办呢?先看看我的一个糟糕方案:

if myorderby=objectid desc then  –按名称排序

open  outcur for select *  from(

select rownum rowno,t.* from (

select objectid , hits,posttime from cartoon order by objectid desc) t

where rownum=startrow;

elsif myorderby=hits desc then  –按点击率排序

open  outcur for select *  from(

select rownum rowno,t.* from (

select objectid , hits,posttime from cartoon order by hits desc) t

where rownum=startrow;

else –按时间排序

open  outcur for select *  from(

select rownum rowno,t.* from (

select objectid , hits,posttime from cartoon order by hits desc) t

where rownum=startrow;

end if;

这虽然是通常使用的两种排序方式得以功过,但显得繁杂而且不够通用。

这时我的同事的好办法:

—————————————————————————

if (myorderby is not null) then

mysql:=select * from( select rownum rowno,t.* from (

select objectid , hits,posttime  from cartoon order by || myorderby ||

) t where rownum< || endrow || ) where rowno>= || startrow;

else

mysql:=select * from( select rownum rowno,t.* from (

select objectid , hits,posttime  from cartoon order by posttime desc) t

where rownum< || endrow || ) where rowno>= || startrow;

end if;

open  outcur for mysql;

怎么样,感觉不同凡响吧。希望你能有更好的办法。

oracle动态排序是什么意思,利用动态SQL解决排序问题-数据库专栏,SQL Server相关推荐

  1. python数据库操作批量sql执行_利用Python如何批量修改数据库执行Sql文件

    利用Python如何批量修改数据库执行Sql文件 来源:中文源码网    浏览: 次    日期:2018年9月2日 [下载文档:  利用Python如何批量修改数据库执行Sql文件.txt ] (友 ...

  2. ligertoolbar 动态加载按钮_Axure利用动态面板实现环形加载进度条

    先来看下效果. 基本原理 上面是组合效果,主要包含三个部分,左半圆.右半圆和中间的百分加载部分.左.右半圆的实现原理很简单,就是利用动态面板的遮挡功能,将一个完整的圆遮挡一半,然后在显示的那一半上面添 ...

  3. 动态代理的分析以及利用动态代理模式进行敏感词汇过滤

    动态代理 增强对象的功能: 设计模式:一些通用的解决固定问题的方式 代理模式 概念: (1). 真实对象:被代理的对象 (2). 代理对象: (3). 代理模式:代理对象代理真实对象,达到增强真实对象 ...

  4. oracle 4098,ORA-04098错误解决方法-数据库专栏,ORACLE

    ora-04098错误解决方法 数据库版本:8.1.5 平台:solaris 5.7 背景: 用户建立了一个trigger: create or replace trigger ddl_deny be ...

  5. oracle命令报01034,ORA-01034错误的解决办法-数据库专栏,ORACLE

    ora-01034错误的解决办法 --oracle常见错误之一 事先说明,oracle高手是不需要看本文的. 这是个oracle数据库服务器比较常见的错误.有经验的用户几乎马上就能解决这个错误,再不济 ...

  6. oracle空值影响索引么,使用索引的误区之四:空值对索引的影响-数据库专栏,SQL Server...

    使用索引的误区之四:空值对索引的影响 我们首先做一些测试数据: sql> create table t(x int, y int); table created 请注意,这里我对表t做了一个唯一 ...

  7. oracle 交叉链接,Oracle里的交叉SQL语句写法-数据库专栏,ORACLE

    实例说明 资料表结构(红色为主键)==> 主表:test_part_cost_tab(料号资料表) part_no  varchar2(20) part_name  varchar2(50) 从 ...

  8. oracle sql语句备份数据库,用SQL语句备份SQL数据库_oracle

    备份数据库的命令是: BACKUP DATABASE test TO disk = 'c:/test' WITH FORMAT, NAME = 'Full Backup of MyNwind' 解释如 ...

  9. axure内联框架和动态面板_【Axure】动态面板的理解与下拉列表的联动

    刚开始学axure,发现入门还是蛮简单的,所以从现在开始写一些自己体会的内容,以后忘记了也可以来翻阅一下. 因为是入门,所以内容肯定是很简单的,但是本文也不会致力于写教程一样那么详细,还是侧重于自己的 ...

最新文章

  1. rocketmq sql解析过滤
  2. 【POJ 1200】Crazy Search(将字符映射为数字,将NC进制hash成10进制)
  3. 机器学习快速截图工具matlab版本——文件夹批量处理(原创)
  4. LAMP 2.2 Apache配置静态缓存
  5. git/github使用完整教程(1)基础
  6. jquery post php返回html,jquery ajax post 提交数据,返回的是当前网页的html?
  7. Servlet 客户端 HTTP 请求
  8. Git 笔记:廖雪峰Git 教程总结
  9. 二进制、十六进制转换表
  10. 联想启天M415安装esxi6.7
  11. 2021考研英语大作文笔记(刘晓燕版)
  12. asio strand
  13. Bootstrap 折叠(Collapse)插件
  14. 【POJ3281】Dining 网络流
  15. uniapp中app分享小程序方法
  16. Gherkin语法详解之Scenario outline(四)
  17. 北师大数据结构期末考试复习
  18. 数据中心网络设备管理(二)
  19. “我的2013”中奖有感及近期规划
  20. NB-IoT技术实战开发 ----- NB-IoT硬件介绍

热门文章

  1. JS中的setTimeout和setInterval函数
  2. 关于新创公司所需的icp,网文,软著和备案的申请
  3. 透明像素-Premultiplied Alpha的秘密
  4. PyTorch中F.cross_entropy()函数
  5. 如何用代码实现textbox换行
  6. “OneFlow U”吴文童:产品和开发者之间是相互作用的
  7. 【转】自使用linux常用命令练习题
  8. 超级红队知识库等你来战-我们要站在红队之巅
  9. 深山老林中的激情探险
  10. php表单提交serialize,jQuery使用serialize(),serializeArray()方法取得表单数据