oracle数据库(事务和动态SQL)

来源:互联网 发布:装饰行业网络销售 编辑:程序博客网 时间:2024/06/01 17:23
1.事务
事务(transaction)是作为单个逻辑工作单元执行的一系列操作;多个操作作为一个整体向系统提交,要么都执行,要么都不执行;事务是一个不可分割的工作漏记单元
事务的特性:事务必须具备以下四个属性,简称ACID属性:
1.原子性(Atomicity):事务是一个完整的操作,事务的各步操作是不可分的(原子的);要么都执行,要么都不执行
2.一致性(Consistency) :当事务完成时,数据必须处于一致状态
3.隔离性(Isolation):并发事务之间彼此隔离、独立,它不应以任何方式依赖于或影响其他事务
4.永久性(Durability):事务完成后,它对数据库的修改被永久保持
在事务中可以定义个保存点savapoint,用于回滚到保存点前的状态
2.动态SQL
动态SQL就是编译期间SQL语句是不确定的,并且在运行时允许发生变化
动态SQL应用场合:在执行一个DDL(数据定义语言)语句时;需要增加程序的灵活性时;使用包DBMS_SQL动态执行SQL语句时
在PL/SQL执行DDL(数据定义语言)语句时要在语句前添加execute immediate,例如:
begin
execute immediate 'create table test_demo (id number primary key,uname varchar2(20) not null)';
end;
动态SQL的执行 :
绑定变量:通过占位符绑定参数;参数类型可以是集合、对象等;不支持PL/SQL定义的类型
declare
id_v NUMBER :=1;
uname_v VARCHAR2(20) :='admin';
sql_v VARCHAR2(50);
begin
sql_v :='insert into test_demo values(:1,:2)';--占位符 :1代表的是using后面的第几个参数,现在:1代表 id_v :2代表name_v
EXECUTE immediate sql_v using id_v,uname_v;
end;