Oracle中的绑定变量
绑定变量就是能够替代SQL语句中常量的替代变量
作用:
绑定变量只是起到占位的作用,同名的绑定变量并不意味着在它们是同样的,在传递时要考虑的是传递的值与绑定变量出现顺序的对位,而不是绑定变 量的名称。
绑定变量是在通常情况下能提升效率,非正常的情况如下:
在字段(包括字段集)建有索引,且字段(集)的集的势非常大(也就是有个值在字段中出现的比例特别的大)的情况下,使用绑定变量可能会导致查询计划错误,因而会使查询效率非常低。这种情况最好不要使用绑定变量。
oracle 中,对于一个提交的sql语句,存在两种可选的解析过程, 一种叫做硬解析,一种叫做软解析.
在共享池中存在的是软解析,即:类似于PL/sql
软解析和绑定变量:select * from dept where id= :d_id;
oracle会首先检查一下共享缓冲池(shared pool)里有没有与之完全相同的语句,如果有的话只须执行软分析即可,否则就得进行硬分析。
而唯一使得oracle 能够重复利用执行计划的方法就是采用绑定变量。绑定变量的实质就是用于替代sql语句中的常量的替代变量。绑定变量能够使得每次提交的sql语句都完全一样。
但是并不是任何情况下都需要使用绑定变量,下面是两种例外情况:
1.对于隔相当一段时间才执行一次的SQL语句,这是利用绑定变量的好处会被不能有效利用优化器而抵消
2.数据仓库的情况下。
绑定变量不能当作嵌入的字符串来使用,只能当作语句中的变量来用。不能用绑定变量来代替表名、过程名、字段名等.
普通sql语句:
SELECT fname, lname, pcode from cust WHERE id = 674;
SELECT fname, lname, pcode from cust WHERE id = 234;
SELECT fname, lname, pcode from cust WHERE id = 332;
含绑定变量的sql 语句:
SELECT fname, lname, pcode from cust WHERE id = :cust_no;
Sql*plus 中使用绑定变量:
SQL> set timing on
SQL> variable x number;
SQL> exec :x :=8
PL/SQL 过程已成功完成。
已用时间: 00: 00: 00.03
SQL> select * from A;
ID
----------
3
5
已用时间: 00: 00: 00.06
SQL> insert into A values(:x);
已创建 1 行。
已用时间: 00: 00: 00.01
SQL> select * f
相关文档:
oracle表空间操作详解
1
2
3作者: 来源: 更新日期:2006-01-04
5
6
7建立表空间
8
9CREATE TABLESPACE data01
10DATAFILE '/ora ......
Mysql,SqlServer,Oracle主键自动增长的设置
1、把主键定义为自动增长标识符类型
在mysql中,如果把表的主键设为auto_increment类型,数据库就会自动为主键赋值。例如:
create table customers(id int auto_increment primary key not null, name varchar(15));
insert into customers(name) values("name1"),("nam ......
sql > variable jobno number ;
sql > begin
sql > DBMS_JOB.submit(:jobno, ' pro_name(); ' ,sysdate, ' sysdate+1 ' );
dbms_job.submit(:job1, ' MYPROC; ' ,sysdate, ' sysdate+1/1440 ' ); -- 每天1440分钟,即一分钟运行test过程一次
sql > commit ;
sql > end ; ......
oracle让id自动增长(insert时不用手动插入id)的办法,像Mysql中的auto_increment那样
创建序列
create sequence emp_seq
increment by 1
start with 1
nomaxvalue
nocycle
......