
正文
oracle怎么绑定变量 oracle绑定变量怎么使用
提示:扫一扫查出行【扫一扫了解最新限行尾号】
复制提示
oracle 如何使用绑定变量
oracle怎么绑定变量你这个写法不对oracle怎么绑定变量,应该是直接写 A.containerowner='APL'
而不能写:p_containerowner,这种写法只有在动态sql中才能用
比如:
execute immediate 'begin insert into test07 values(:x,:x:y:x); end;'
using a,b;
a和boracle怎么绑定变量的值是预先定义好oracle怎么绑定变量的,直接填充占位符x y
相关问答
Q1: C#net 怎么使oracle sql 语句绑定变量
数据集特别死oracle怎么绑定变量,控制力很差。并且效率很低
如果不是做系统级别的不推荐
oracle怎么绑定变量你sql server怎么玩 这里的 oracle的 语句就怎么写 没什么关系oracle怎么绑定变量,只是一个连接字符串和 环境的问题 可以参考一下oracle怎么绑定变量,下面的代码:
OracleConnection oraCon = new OracleConnection("data source=test;user id=test;password=test");
OracleCommand oraCmd = new OracleCommand("select * from tb where id=:id", oraCon);
OracleParameter oraPara = new OracleParameter("id", OracleType.NVarChar);
oraPara.Direction = ParameterDirection.Input;
oraPara.Value = "001";
oraCmd.Parameters.Add(oraPara);
oraCon.Open();
OracleDataReader oraRdr = oraCmd.ExecuteReader(CommandBehavior.CloseConnection);
oraRdr.Read();
Response.Write(oraRdr[0].ToString());
oraRdr.Close();
Q2: 什么是的oracle绑定变量 又该如何使用怎么,有哪些优点
绑定变量是为了减少解析的,比如你有个语句这样
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后面是什么值,都不需要重复解析
如果你用数据仓库,一条大查询一跑几个小时,根本没必要做绑定变量,因为解析的消耗微乎其微,而且绑定变量对优化器判断执行路径也有负面影响。
Q3: 绑定变量的获取
对于带有绑定变量的SQL语句 ORACLE在第一次执行的时候 将会进行绑定变量的PEEK 是否PEEK是否隐含参数_OPTIM_PEEK_USER_BINDS控制 默认为TRUE ORACLE在第一次
PEEK之后 将绑定变量的值放到V$SQL BIND_DATA列里 如下
SQL SELECT COUNT( ) FROM TEST;
COUNT( )
SQL DESC TEST;
Name Null? Type
OWNER VARCHAR ( )
NAME VARCHAR ( )
TYPE VARCHAR ( CHAR)
LINE NUMBER
TEXT VARCHAR ( )
SQL SELECT LINE COUNT( ) FROM TEST GROUP BY LINE;
LINE COUNT( )
SQL VARIABLE LINE NUMBER
SQL EXEC :LINE:= ;
PL/SQL procedure successfully pleted
SQL SELECT COUNT( ) FROM TEST WHERE LINE=:LINE;
COUNT( )
SQL COL SQL_ID FORMAT A
SQL COL BIND_DATA FORMAT A
SQL SELECT SQL_ID BIND_DATA FROM V$SQL WHERE SQL_TEXT= SELECT COUNT( ) FROM TEST WHERE LINE=:LINE ;
SQL_ID BIND_DATA
abhf n xqgrr BEDA A C EB C C
SQL SELECT VALUE_STRING FROM TABLE(DBMS_SQLTUNE EXTRACT_BINDS( BEDA A C EB C C ));
VALUE_STRING
SQL SELECT * FROM TABLE(DBMS_XPLAN DISPLAY_CURSOR( abhf n xqgrr ));
PLAN_TABLE_OUTPUT
SQL_ID abhf n xqgrr child number
SELECT COUNT( ) FROM TEST WHERE LINE=:LINE
Plan hash value:
| Id | Operation | Name | Rows | Bytes | Cost |
| | SELECT STATEMENT | | | | |
| | SORT AGGREGATE | | | | |
|* | INDEX FAST FULL SCAN| IDX_TEST_ | K| K| |
Predicate Information (identified by operation id):
filter( LINE =:LINE)
Note
cpu costing is off (consider enabling it)
rows selected
SQL EXEC :LINE:= ;
PL/SQL procedure successfully pleted
SQL SELECT COUNT( ) FROM TEST WHERE LINE=:LINE;
COUNT( )
SQL ALTER SYSTEM FLUSH SHARED_POOL;
System altered
SQL SELECT COUNT( ) FROM TEST WHERE LINE=:LINE;
COUNT( )
SQL SELECT SQL_ID BIND_DATA FROM V$SQL WHERE SQL_TEXT= SELECT COUNT( ) FROM TEST WHERE LINE=:LINE ;
SQL_ID BIND_DATA
abhf n xqgrr BEDA A C ECC C C
SQL SELECT VALUE_STRING FROM TABLE(DBMS_SQLTUNE EXTRACT_BINDS( BEDA A C ECC C C ));
VALUE_STRING
SQL PRINT:
LINE
SQL EXEC :LINE:= ;
PL/SQL procedure successfully pleted
SQL SELECT COUNT( ) FROM TEST WHERE LINE=:LINE;
COUNT( )
SQL SELECT SQL_ID BIND_DATA FROM V$SQL WHERE SQL_TEXT= SELECT COUNT( ) FROM TEST WHERE LINE=:LINE ;
SQL_ID BIND_DATA
abhf n xqgrr BEDA A C ECC C C
SQL SELECT VALUE_STRING FROM TABLE(DBMS_SQLTUNE EXTRACT_BINDS( BEDA A C ECC C C ));
VALUE_STRING
对于随后的绑定变量的捕获 ORACLE将放在V$SQL_BIND_CATPURE里 默认每隔 秒捕获一次 捕获间隔受隐含参数_cursor_bind_capture_interval的控制
为了演示的方便 我们把这个间隔设小一点
SQL alter system set _cursor_bind_capture_interval = ;
System altered
SQL exec :LINE:= ;
PL/SQL procedure successfully pleted
SQL SELECT COUNT( ) FROM TEST WHERE LINE=:LINE;
COUNT( )
SQL EXEC :LINE:= ;
PL/SQL procedure successfully pleted
SQL SELECT COUNT( ) FROM TEST WHERE LINE=:LINE;
COUNT( )
SQL EXEC :LINE:= ;
PL/SQL procedure successfully pleted
SQL SELECT COUNT( ) FROM TEST WHERE LINE=:LINE;
COUNT( )
SQL SELECT VALUE_STRING FROM V$SQL_BIND_CAPTURE WHERE SQL_ID= abhf n xqgrr ;
VALUE_STRING
SQL EXEC :LINE:= ;
PL/SQL procedure successfully pleted
SQL SELECT VALUE_STRING FROM V$SQL_BIND_CAPTURE WHERE SQL_ID= abhf n xqgrr ;
VALUE_STRING
SQL SELECT VALUE_STRING FROM V$SQL_BIND_CAPTURE WHERE SQL_ID= abhf n xqgrr ;
VALUE_STRING
SQL EXEC :LINE:= ;
PL/SQL procedure successfully pleted
SQL SELECT VALUE_STRING FROM V$SQL_BIND_CAPTURE WHERE SQL_ID= abhf n xqgrr ;
VALUE_STRING
lishixinzhi/Article/program/Oracle/201311/18232
Q4: Oracle中关于绑定变量的使用技巧
提示无效数字,你应该看前面查出来的值是不是数字。
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)
Q5: 如何查看Oracle SQL绑定变量
查看Oracle SQL绑定变量方法如下:
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;
关于oracle怎么绑定变量和oracle绑定变量怎么使用的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。






