数据库中事务、存储过程、函数、同义词的使用
2017-10-07 10:43
459 查看
事务
事务(Transaction)是作为单个逻辑工作单位执行的一系列操作
多个操作作为一个整体向系统提交,要么都执行、要么都不执行
事务是一个不可分割的工作逻辑单元
事务的特性
事务必须具备以下四个属性,简称ACID属性
原子性(Atomicity):事务是一个完整的操作,事务的各步操作是不可分的(原子性);
要么都执行,要么都不执行
一致性(Consistency):当事务完成时,数据必须处于一致状态
隔离性(Isolation):并发事务之间彼此隔离、独立,它不应以任何方式依赖于或影响其他事务
永久性(Durability):事务完成后,它对数据库的修改被永久保持
存储过程
预先存储好的SQL程序
保存在Oracle中
通过名称和参数执行
可带参数,也可返回结果
可包含数据操纵语句、变量、逻辑控制语句等
优点:
执行速度更快
减少网络流通量
创建存储过程:
存储过程之创建无参存储过程
函数相关应用实例1:计算两数之和
事务(Transaction)是作为单个逻辑工作单位执行的一系列操作
多个操作作为一个整体向系统提交,要么都执行、要么都不执行
事务是一个不可分割的工作逻辑单元
事务的特性
事务必须具备以下四个属性,简称ACID属性
原子性(Atomicity):事务是一个完整的操作,事务的各步操作是不可分的(原子性);
要么都执行,要么都不执行
一致性(Consistency):当事务完成时,数据必须处于一致状态
隔离性(Isolation):并发事务之间彼此隔离、独立,它不应以任何方式依赖于或影响其他事务
永久性(Durability):事务完成后,它对数据库的修改被永久保持
存储过程
预先存储好的SQL程序
保存在Oracle中
通过名称和参数执行
可带参数,也可返回结果
可包含数据操纵语句、变量、逻辑控制语句等
优点:
执行速度更快
减少网络流通量
创建存储过程:
存储过程之创建无参存储过程
--无参的存储过程 create or replace PROCEDURE hello_pro as begin dbms_output.put_line('Hello Procedure'); end;测试代码:
set serveroutput on; begin hello_pro; end;存储过程之创建有参存储过程
--1.参数的数据类型不能加长度 --2.不加IN或out 默认为IN,即输入参数 --3.调用带有参数的存储过程必须要传参 create or replace PROCEDURE with_param_pro(str in VARCHAR2) as begin dbms_output.put_line( str); end;存储过程相关实例1:
--在emp表空间中创建存储过程,接收编号,参数类型与emp表中相同,执行存储过程能够打印姓名及工资 create or replace procedure emp_print_pro(eno emp.empno%type) as emp_ emp%rowtype; begin select * into emp_ from emp where empno=eno; dbms_output.put_line('员工的姓名是'||emp_.ename||',基本工资是'||emp_.sal); end;实例2:增加一个汽车的类型,数量、价格、生产年份
--存储过程方法 create or replace PROCEDURE add_car(car_type VARCHAR2,car_num VARCHAR2,car_price NUMBER,car_year VARCHAR2) as begin insert into car values(car_seq.nextval,car_type,car_num,car_price,car_year); commit; dbms_output.put_line('数据存储成功'); EXCEPTION when OTHERS then dbms_output.put_line('数据存储失败'); END ;测试代码:
set serveroutput on; exec add_car('福田','55',12000,'1995年')函数
函数相关应用实例1:计算两数之和
--计算两数之和 create or replace FUNCTION num_func (num1 in number,num2 in NUMBER) RETURN number as BEGIN RETURN num1+ num2; exception when others then dbms_output.put_line('计算失败'); end;测试代码:
select num_func(12,13) from dual;应用实例2:将存储过程中汽车的实例用函数方法
--函数方法 create or replace function car_add_func (car car%rowtype) return NUMBER as BEGIN INSERT Into car values(car_seq.nextval,car.ctype,car.num,car.price,car.year); COMMIT; return 1; EXCEPTION when OTHERS then rollback; dbms_output.put_line('添加失败'); return 0; END;测试代码:
declare car_ car%rowtype; begin car_.ctype:='JEEP自由光'; car_.num:='2.5T'; car_.price:=250000.00; car_.year:='25-9月 17'; dbms_output.put_line('影响行数是'||car_add_func(car_)); end;同义词
--设置同义词可以把不属于本账号的表空间下的表共享,可以在其他表空间下进行操作 --公共同义词可以在任意表空间下操作 --同义词创建 create SYNONYM access_ for sys.access$ --删除 drop SYNONYM access_ --查询 select * from access_ --创建公共同义词 create public SYNONYM access_ for sys.access$
相关文章推荐
- 数据库中的事务、视图、序列 、同义词、索引、数据字典、PL/SQL块 、异常处理、存储过程
- 数据库中的事务、存储过程和触发器的简单使用
- 【数据库学习笔记】Oracle_04_存储过程,函数,触发器,索引,同义词
- 事务中使用存储过程解决数据库表锁定达到报错回滚效果
- 数据库事务和存储过程已经函数的概念以及使用方法
- 数据库封装类DataOperation改进(支持事务、存储过程、简单使用例子)
- 3.22 学数据库 视图 存储过程 触发器 事务 函数 索引
- 创建数据库、表、主外键、各种约束、存储过程、视图、索引、事务使用、触发器、创建登录账号、数据库用户 Sql语句示例
- C#使用存储过程访问数据库
- 在asp.net Sql server (可以是存储过程)中使用事务回滚
- 三级次数据(一):在数据库使用存储过程输出为自联表形式
- 使用存储过程将文本导入数据库表
- 判断IP地址是否合法的sql2000使用存储过程跟函数
- 也谈 .NET2.0 事务处理 TransactionScope 的使用:[在访问相同数据库时避免讨厌的分布式事务]
- 使用存储过程(PL/SQL)向数据库中存取BLOB对象——图片
- 判断IP地址是否合法的sql2000使用存储过程跟函数
- 如何在 SQL Server 2005 中使用 DBCC SHRINKFILE 语句收缩事务日志文件-数据库知识
- 使用存储过程 操作数据库 2个输入参数 1个输出参数
- 如何使用VS.NET调试数据库存储过程(转)
- 判断IP地址是否合法的sql2000使用存储过程跟函数