请教:DB2中静态SQL和动态SQL的概念,偶比较模糊,谢谢
请教B2中静态SQL和动态SQL的概念,偶比较模糊,
存储过程是属于动态还是静态呢?
谢谢先!
存储过程是属于动态还是静态呢?
谢谢先!
作者: daliwa 发布时间: 2005-01-12
关注一下,顶
作者: myuhan 发布时间: 2005-01-12
存储过程有静态的SQL也有动态的SQL
作者: zzjijun 发布时间: 2005-01-12
希望有高手解释一下,
这虽然看似简单,
但我相信很多人还不是很清楚 .
谢谢
这虽然看似简单,
但我相信很多人还不是很清楚 .
谢谢
作者: daliwa 发布时间: 2005-01-12
静态,动态时针对sql而言的,简单说,静态sql在编译时确定,动态sql在运行时确定,可以由用户确定,更加灵活
作者: oprs 发布时间: 2005-01-12
参考这个把,对嵌入式的静态,动态sql做了比较
http://www-900.ibm.com/developerWorks/cn/dmdd/library/techarticles/mag_02q2eaton/eaton.shtml
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.
简单的话是正确的,但是多少人不明白.
学了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