现在的位置: 首页 > 综合 > 正文

Oracle实用-01:绑定变量

2013年06月29日 ⁄ 综合 ⁄ 共 632字 ⁄ 字号 评论关闭

数据库虽然在学校系统学习过,但是在工作中真正使用起来收获又是不一样的,今天起打算将项目中使用到的技术再分享出来,不以书本的顺序,只从碰到的问题为顺序。

虽然不是纯粹的数据库工程师,但是每个程序员总免不了要写sql语句。最近一直在写服务,从数据库读取数据,但是当项目上线之后再回过头来看这些sql语句,总发现有很多是相似的,不如where条件有很多是一样的。这让我想起一句话,大意是:如果程序中有很多相同的代码,那么尽量去提取出来(当然是尽量,不是一定要提取,这个要注意)。那么sql语句不也是一样吗,比如,如果有相似的查询语句,就应该作为存储过程公共使用。比如下面说的,变量绑定技术。

Oracle在执行sql查询语句时,首先从共享池中查找当前使用的完全相同的(指所有字符相同,字母大小写相同、空格相同)查询sql语句。所谓共享池中就是指都是经过解析和优化的语句。所以如果共享池中有公用的语句,那么减少了重新解析和优化,效率将会提高。下面来看变量绑定如何使用。

有一个tb_Name表,有id、name字段。

select * from  tb_Name where id='12345'

假设id='12345'其他地方也用到。

那么,声明一个变量:_setid

begin
    :_setid:='12345';
end

那么在其他语句中直接使用这个变量,

select name from tb_Name where id=:_setid

这样节省了解析优化的时间。

当然变量绑定只有在反复使用某个语句时使用。

抱歉!评论已关闭.