Oracle sql绑定变量
来源:互联网 发布:淘宝每日抽取红包app 编辑:程序博客网 时间:2024/04/28 18:43
方法一、存储过程中绑定变量
PROCEDURE PRO_TEST(O_NUMBER OUT NUMBER) AS --INIT M_COUNT NUMBER; M_VARCHAR2 VARCHAR2(20); M_SQL VARCHAR2(2000); M_CUR CUR_TYPE; M_CUR_ITEM M_CUR%ROWTYPE; BEGIN -- TEST 1 M_VARCHAR2 := '20110305%'; M_SQL := 'SELECT count(*) FROM T_CZW_YW_TBD T WHERE T.CLDEPT like :M_VARCHAR2'; --M_SQL := 'SELECT COUNT(*) FROM DUAL T WHERE 20110305 =:M_VARCHAR2'; EXECUTE IMMEDIATE M_SQL INTO M_COUNT USING M_VARCHAR2; O_NUMBER := M_COUNT;
方法2 java代码绑定
String p_id = 'xxxxx';String m_sql = 'select * from table_name where id = ? '; //嵌入绑定变量stmt = con.prepareStatement( v_sql );stmt.setString(1, p_id ); //为绑定变量赋值stmt.executeQuery();
方法3 sqlplsu 绑定变量
SQL> DEFINE V_TEST='V_TEST';SQL> DEFINEDEFINE _SQLPLUS_RELEASE = "000000000" (CHAR)DEFINE _EDITOR = "PLSQLDev" (CHAR)DEFINE _DATE = "2014-5-9" (CHAR)DEFINE _PRIVILEGE = "" (CHAR)DEFINE _O_VERSION = "" (CHAR)DEFINE _O_RELEASE = "000000000" (CHAR)DEFINE _USER = "HNXZZF" (CHAR)DEFINE _CONNECT_IDENTIFIER = "10.161.109.230/ORCL" (CHAR)DEFINE V_TEST = "V_TEST" (CHAR)SQL> select count(*) from dual where 'HNXZZF'='&_USER'; COUNT(*)---------- 1SQL> select count(*) from dual where 'V_TEST'='&V_TEST'; COUNT(*)---------- 1
--UNDEFINE V_TEST 清楚变量 V_TEST
99 清除共享池(注意,清除会消耗大量系统性能,同时也会降低sql的触发概率,以后的执行计划将会cost多)
alter system flush shared_pool;
1、SQL语句硬分析(Hard Parse)太多,严重消耗CPU资源,延长了SQL语句总的执行时间。
SQL语句的执行过程分几个步骤:语法检查、分析、执行、返回结果。其中分析又分为硬分析(Hard Parse)和软分析(Soft Parse)。
一条SQL语句通过语法检查后,Oracle 会先去shared pool 中找是否有相同的sql,如果找着了,就叫软分析,然后执行SQL语句。
硬分析主要是检查该sql所涉及到的所有对象是否有效以及权限等关系,然后根据RBO或CBO模式生成执行计划,然后才执行SQL语句。
可以看出,硬分析比软分析多了很多动作,而这里面的关键是“在shared pool 中是否有相同的sql”,而这就取决于是否使用绑定变量。
2、共享池中SQL语句数量太多,重用性极低,加速了SQL语句的老化,导致共享池碎片过多。
共享池中不同的SQL语句数量巨大,根据LRU原则,一些语句逐渐老化,最终被清理出共享池;这样就导致shared_pool_size 里面命中率
下降,共享池碎片增多,可用内存空间不足。而为了维护共享池内部结构,需要使用latch,一种内部生命周期很短的lock,这将使用大量
的cpu 资源,使得性能急剧下降。
不使用绑定变量违背了oracle 的shared pool 的设计的原则,违背了这个设计用来共享的思想。
0 0
- Oracle sql绑定变量
- Oracle PL/SQL 绑定变量
- oracle PL/SQL 中变量绑定用法
- oracle动态sql以及绑定变量
- oracle 绑定变量和动态sql
- 使用绑定变量的方法(Oracle SQL共享的机制)
- 用Oracle绑定变量替代sql语句里常量
- 查看Oracle数据库中未绑定变量的SQL
- 《基于ORACLE的SQL优化读书》笔记 绑定变量窥探
- 《基于ORACLE的SQL优化读书》笔记 绑定变量分级
- 【SQL】Oracle 数据库的绑定变量特性及应用
- Oracle 获取没有使用绑定变量的SQL语句
- Oracle数据库SQL语句绑定变量一----性能问题
- Oracle数据库SQL语句绑定变量二----安全问题
- SQL/PLSQL:Oracle绑定变量使用实例 define undefine verify
- Oracle 利用FORCE_MATCHING_SIGNATURE捕获非绑定变量SQL
- Oracle 绑定变量
- Oracle 绑定变量
- 网站点击导航栏标题,对应的元素平滑上移以及点击图片或按钮回到页面顶部的特效
- 9008
- 进程和线程的区别
- INPUT标签无边框
- 1>/dev/null 2>&1
- Oracle sql绑定变量
- IM软件业务知识—iOS 客户端创建网络连接,常见错误汇总
- Vc++(MFC)中使用ADO 连接SQL Server的(远程)
- 组合和聚合的区别
- PAT A 1023. Have Fun with Numbers (20)
- Android中ImageSwitcher结合Gallery展示SD卡中的资源图片(1)
- POJ-1321 棋盘问题
- 手机系统文件被误删怎么恢复
- HDU 4717 The Moving Points(三分)