查看Oracle SQL绑定变量方法如下:
创新互联建站主要为客户提供服务项目涵盖了网页视觉设计、VI标志设计、成都全网营销推广、网站程序开发、HTML5响应式重庆网站建设、手机网站开发、微商城、网站托管及成都企业网站维护、WEB系统开发、域名注册、国内外服务器租用、视频、平面设计、SEO优化排名。设计、前端、后端三个建站步骤的完善服务体系。一人跟踪测试的建站服务标准。已经为假山制作行业客户提供了网站改版服务。
alter session set nls_date_format = 'yyyy-mm-dd,hh24:mi:ss';
set linesize 400
col sql_Id format a20
col name format a20
col datatype_string format a14
col value_string format a20
--这个sql从内存中读取绑定变量值信息,若是不在内存中,则使用下一个sql
select sql_id,name, datatype_string, last_captured,value_string from v$sql_bind_capture where sql_id='dxfcacn4t4ppw' order by LAST_CAPTURED,POSITION;
--这个sql从awr中读取绑定变量值信息
select instance_number, sql_id,name, datatype_string, last_captured,value_string from dba_hist_sqlbind where sql_id='fahv8x6ngrb50'order by LAST_CAPTURED,POSITION;
你这个写法不对,应该是直接写 A.containerowner='APL'
而不能写:p_containerowner,这种写法只有在动态sql中才能用
比如:
execute immediate 'begin insert into test07 values(:x,:x:y:x); end;'
using a,b;
a和b的值是预先定义好的,直接填充占位符x y
提示无效数字,你应该看前面查出来的值是不是数字。
select max(ts_pp_supplier_id) into v_id from TS_SUPPLIER;
其中:max(ts_pp_supplier_id),要确认两点:
1.ts_pp_supplier_id字段是数字。
2.TS_SUPPLIER表查询出来是不是有记录。如果没有记录,max(ts_pp_supplier_id)会是null。所以你应该再包一层nvl(max(ts_pp_supplier_id),0)
绑定变量是为了减少解析的,比如你有个语句这样
select aaa,bbb from ccc where ddd=eee;
如果经常通过改变eee这个谓词赋值来查询,像如下
select aaa,bbb from ccc where ddd=fff;
select aaa,bbb from ccc where ddd=ggg;
select aaa,bbb from ccc where ddd=hhh;
每条语句都要被数据库解析一次,这样比较浪费资源,如果把eee换成“:1”这样的绑定变量形式,无论ddd后面是什么值,都不需要重复解析
如果你用数据仓库,一条大查询一跑几个小时,根本没必要做绑定变量,因为解析的消耗微乎其微,而且绑定变量对优化器判断执行路径也有负面影响。