请教:DB2中静态SQL和动态SQL的概念,偶比较模糊,谢谢
时间:2005-01-12
来源:互联网

存储过程是属于动态还是静态呢?
谢谢先!
作者: daliwa 发布时间: 2005-01-12
作者: myuhan 发布时间: 2005-01-12
作者: zzjijun 发布时间: 2005-01-12
这虽然看似简单,
但我相信很多人还不是很清楚 .
谢谢
作者: daliwa 发布时间: 2005-01-12
作者: oprs 发布时间: 2005-01-12
http://www-900.ibm.com/developerWorks/cn/dmdd/library/techarticles/mag_02q2eaton/eaton.shtml
作者: oprs 发布时间: 2005-01-12
学了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.
简单的话是正确的,但是多少人不明白.
作者: tom_fans 发布时间: 2011-05-18
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28