daliwa 发表于 2005-01-12 09:56

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

请教:DB2中静态SQL和动态SQL的概念,偶比较模糊,
存储过程是属于动态还是静态呢?
谢谢先!

myuhan 发表于 2005-01-12 10:30

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

关注一下,顶

zzjijun 发表于 2005-01-12 14:51

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

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

daliwa 发表于 2005-01-12 15:06

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

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

oprs 发表于 2005-01-12 22:31

oprs 发表于 2005-01-12 22:32

tom_fans 发表于 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.

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

咖啡红茶11 发表于 2011-05-18 18:38

我也有这个疑问 。。。。
页: [1]
查看完整版本: 请教:DB2中静态SQL和动态SQL的概念,偶比较模糊,谢谢