免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 5098 | 回复: 7
打印 上一主题 下一主题

请教:DB2中静态SQL和动态SQL的概念,偶比较模糊,谢谢 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2005-01-12 09:56 |只看该作者 |倒序浏览
请教B2中静态SQL和动态SQL的概念,偶比较模糊,
存储过程是属于动态还是静态呢?
谢谢先!

论坛徽章:
0
2 [报告]
发表于 2005-01-12 10:30 |只看该作者

请教:DB2中静态SQL和动态SQL的概念,偶比较模糊,谢谢

关注一下,顶

论坛徽章:
0
3 [报告]
发表于 2005-01-12 14:51 |只看该作者

请教:DB2中静态SQL和动态SQL的概念,偶比较模糊,谢谢

存储过程有静态的SQL也有动态的SQL

论坛徽章:
0
4 [报告]
发表于 2005-01-12 15:06 |只看该作者

请教:DB2中静态SQL和动态SQL的概念,偶比较模糊,谢谢

希望有高手解释一下,
这虽然看似简单,
但我相信很多人还不是很清楚 .
谢谢

论坛徽章:
0
5 [报告]
发表于 2005-01-12 22:31 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
0
6 [报告]
发表于 2005-01-12 22:32 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
0
7 [报告]
发表于 2011-05-18 01:44 |只看该作者
老帖子!

学了ORACLE的人,如果去理解DB2的动态和静态,简直要发狂.
在ORACLE中, select * from table where id=1, 这便是静态
下面便是动态:
declare b varchar(100)
b :='select * from table where id=:1'
execute immediate b using 1

一看就知道,所谓的静态是一开始就知道SQL是什么,动态是开始不知道的,只有在执行的时候,execute immediate才知道原来where id=1.

但是在DB2,这种概念完全改变.

select * from table where id=1 是什么态? 好像是静态,其实在DB2中这是动态SQL.

如果上面这个SQL都是动态,那何为静态呢?

放开一点思维,在DB2中,所谓的动态,是指在执行的时候才编译. 比如你输入select * from table where id=1到cli中,SQL开始执行,自然就要编译。这便是DB2中的动态概念.和SQL没有任何关系,只和编译有关系.

那么静态是什么,问到这个问题,自然有很多人会问什么是bind一个道理. 因为没有理解静态,所以无法理解BIND.
静态是指,SQL之前就编译好了. 已经生成了计划,这便引出了DB2 package的概念, package便是存放了计划的东东. 总之package放了SQL执行一些必要条件. 这东西便是bind产生的.

搜索一下google就知道,解释DB2的静态和动态,大部分是这么说的,动态是执行的时候编译的,需要perpare, 静态是指预先编译,生成了package.

简单的话是正确的,但是多少人不明白.

论坛徽章:
0
8 [报告]
发表于 2011-05-18 18:38 |只看该作者
我也有这个疑问 。。。。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP