楼主: SUNBLAZE

[精华] 动态SQL与绑定变量

[复制链接]
论坛徽章:
1
2013年新春福章
日期:2013-02-25 14:51:24
41#
发表于 2012-3-12 15:12 | 只看该作者
多谢分享

使用道具 举报

回复
论坛徽章:
1
2013年新春福章
日期:2013-02-25 14:51:24
42#
发表于 2013-2-19 11:35 | 只看该作者
顶一个!

使用道具 举报

回复
论坛徽章:
512
2012新春纪念徽章
日期:2012-01-04 11:53:54ITPUB十周年纪念徽章
日期:2011-11-01 16:23:26股神
日期:2012-01-05 10:29:02天枰座
日期:2015-09-16 09:05:30指数菠菜纪念章
日期:2015-07-01 16:40:43喜羊羊
日期:2015-06-30 09:06:18指数菠菜纪念章
日期:2015-04-02 09:22:462015年新春福章
日期:2015-03-06 11:58:18懒羊羊
日期:2015-03-04 14:52:11指数菠菜纪念章
日期:2015-01-04 11:09:18
43#
发表于 2014-4-15 17:16 | 只看该作者
写的真好,虽然是老帖,还是要顶,谢谢!

使用道具 举报

回复
论坛徽章:
26
ITPUB新首页上线纪念徽章
日期:2007-10-20 08:38:44ITPUB十周年纪念徽章
日期:2011-11-01 16:20:282012新春纪念徽章
日期:2012-01-04 11:49:542013年新春福章
日期:2013-02-25 14:51:24夏利
日期:2013-08-13 23:25:29优秀写手
日期:2013-12-18 09:29:092014年新春福章
日期:2014-02-18 16:41:11马上有车
日期:2014-02-18 16:41:11蓝色妖姬
日期:2015-03-19 09:37:00ITPUB年度最佳技术原创精华奖
日期:2015-03-19 09:43:24
44#
发表于 2014-5-1 13:19 | 只看该作者
本帖最后由 qingyun 于 2014-5-1 13:37 编辑

好贴,有Newkid兄参与,必然有深度;

1.动态绑定变量我也困惑过 :    execute immedate '... 'using 后面不能接数组,只能是一个一个变量写;但是变量有的是不固定的;
上面几个朋友举得例子都有局限性,比如4个where条件,只写了4种可能性,实际是power(2,4)=16种可能性 ;
相当于考虑了 grouping sets 的 rollup ,没考虑cube ;其实就是rollup 也够不通用了;后面几个例子优化了一下,通过变量数组的个数来动态实现,稍微好些了,但是还是有局限性;

所以:dbms_sql 才是终结解决方法;NewKid兄也说的很详细,但是我也不喜欢用dbms_sql,毕竟使用起来比较复杂,而且我还怀疑dbms_sql 会损失一定的效率;        或者用 sys_context配合execute immedate 使用,感觉有很怪怪的,会不会执行路径出问题;


2. where 1=1 这个写法,我也参与讨论了;我一直觉得很傻,其实很多工具软件里也用到这个,比如toad,不知道最新版本有没有把这个去掉;
   其实这个技巧,我个人认为是程序员开始的不动脑筋或是偷懒;
   以为后面直接 and...and... 一路拼接下去,实现起来很“方便”;最后大家一个学一个,貌似成了一个规范;
    但是当初那个帖子,大家后来的讨论的有点偏离方向,搞得1=1好像有很多玄关似的,有的人甚至认为这样是为了优化执行路径的考虑;

   其实就算拼接,不用1=1 也很简单的;
   每个条件都写 and...
  最后拼接前 ,截掉前面4个字母就OK了;




使用道具 举报

回复
求职 : 数据库管理员
招聘 : Java研发
论坛徽章:
6402
娜美
日期:2021-10-12 20:11:36技术图书徽章
日期:2021-09-30 12:11:1120周年集字徽章-年	
日期:2021-09-30 12:12:5820周年集字徽章-20	
日期:2021-09-30 12:43:0619周年集字徽章-周
日期:2021-09-30 13:18:3120周年集字徽章-20	
日期:2021-09-30 16:44:1219周年集字徽章-周
日期:2021-09-30 17:01:04技术图书徽章
日期:2021-09-30 17:59:14技术图书徽章
日期:2021-10-06 10:36:4019周年集字徽章-19
日期:2021-10-06 14:43:24
45#
发表于 2014-5-1 14:31 | 只看该作者
qingyun 发表于 2014-5-1 13:19
好贴,有Newkid兄参与,必然有深度;

1.动态绑定变量我也困惑过 :    execute immedate '... 'using 后面 ...

出个:数据库板块每日发贴之星??

使用道具 举报

回复
论坛徽章:
0
46#
发表于 2014-8-7 11:14 | 只看该作者
写的真好,虽然是老帖,还是要顶,谢谢!
需要收藏此帖

使用道具 举报

回复
论坛徽章:
2
暖羊羊
日期:2015-03-04 14:54:572015年新春福章
日期:2015-03-06 11:59:47
47#
发表于 2015-3-16 17:43 | 只看该作者
支持下

使用道具 举报

回复
论坛徽章:
5
2013年新春福章
日期:2013-02-25 14:51:242014年新春福章
日期:2014-02-18 16:43:09马上有钱
日期:2014-02-18 16:43:09美羊羊
日期:2015-03-04 14:52:282015年新春福章
日期:2015-03-06 11:58:18
48#
发表于 2015-3-16 20:48 | 只看该作者
支持原创,赞一个

使用道具 举报

回复

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

本版积分规则 发表回复

TOP技术积分榜 社区积分榜 徽章 团队 统计 知识索引树 积分竞拍 文本模式 帮助
  ITPUB首页 | ITPUB论坛 | 数据库技术 | 企业信息化 | 开发技术 | 微软技术 | 软件工程与项目管理 | IBM技术园地 | 行业纵向讨论 | IT招聘 | IT文档
  ChinaUnix | ChinaUnix博客 | ChinaUnix论坛
CopyRight 1999-2011 itpub.net All Right Reserved. 北京盛拓优讯信息技术有限公司版权所有 联系我们 未成年人举报专区 
京ICP备16024965号-8  北京市公安局海淀分局网监中心备案编号:11010802021510 广播电视节目制作经营许可证:编号(京)字第1149号
  
快速回复 返回顶部 返回列表