当前位置: 首页 > article >正文

PLSQL高级编程-面向对象编程

PL/SQL(procdure language/sql) 是什么:

PLSQL是对oracle标准的一个sql语言的扩展,是在oracle数据库上进行编程的语言。

PLSQL相对SQL的优点:

(1)对SQL语句进行模块化编程
例如完成一个电商购物网站发送订单的需求
传统的sql:仅用sql语句,那么下一个订单可能需要发送好几条SQL语句。
PLSQL:写好一个模块,专门完成下订单的功能,当需要下订单的时候,只需要传入参数,调用模块就可以了。

(2)执行速度更优
传统的sql:涉及到sql语句的网络传输时间和dbms对sql语句的编译时间,效率不高。
PLSQL:sql语句是写在数据库中的只需要编译一次,省去了sql语句的网络传输时间,效率比较高
(3)安全性更好
传统的sql:sql语句直接写在程序或者客户端中,在网络传输的过程中会产生一些不安全因素,如sql注入等。
PLSQL:sql语句是写在数据库里面的,不需要网络传输。
(4)节约带宽
传统sql浪费带宽,而plsql节省带宽

举例

编写一个过程,往emp表中中插入一条记录

create procedure prol is
      begin 
      insert into emp(empno,ename,sal,deptno) values(1011,'lili',3000,20);
      end;    

exec prol;  -- 调用过程

PLSQL还可以使用面向对象编程。

什么是面向对象编程

面向对象编程简称OOP编程,实际上是对现实世界事物的一种抽象的过程。它的核心是把对象的定义和实现进行区分,让定义部分对象所具有的结构,让实现部分根据定义部分定义的具体结构进行具体的实现。

PLSQL中的对象是什么

PL/SQL中的对象类型是一种自定义的复合类型,与包的定义很相似,由两部分组成:

  • 对象类型规范:是对象与应用的接口,用于定义对象的公用属性和方法。
  • 对象类型体:用于实现对象类型规范所定义的公用方法。

PLSQL中可以定义的几种类型的方法

1.构造方法:
该方法类似于JAVA等语言中的构造函数,用来初始化一个对象类型并返回对象的实例。

2.MEMBER方法:
该方法允许对象的实例进行调用,在MEMBER方法中可以访问对象实例的数据,通常称为实例方法或成员方法。

3.STATIC方法:
该方法可以直接在对象类型上进行调用,它用于在对象类型上执行全局操作,通常称为静态方法。

4.MAP方法:
用于在多个对象间排序的映射方法。

5.ORDER方法:
用于在两个对象实例间排序的排序方法。

举例

定义employee_obj对象规范

create or replace type employee_obj as object(
empno number(4),
ename varchar2(20),
job varchar2(20),
sal number(10,2),
comm number(10,2),
deptno number(4),
MEMBER procedure change_sal(p_empno number,p_sal number),
MEMBER procedure change_comm(p_empno number,p_comm number),
MEMBER procedure change_deptno(p_empno number,p_deptno number),
MEMBER procedure get_sal(p_empno number) return number,
MEMBER procedure get_comm(p_empno number) return number,
MEMBER procedure get_deptno(p_empno number) return integer
)NOT FINAL;  --指定该类可以被继承,如果指定FINAL,表示该类无法被继承

定义对象体

create or replace type body employee_obj as

member procedure chang_sal(p_empno number,p_sal number) is
begin
update emp set sal=p_sal where empno=p_empno;
end;
member procedure chang_comm(p_empno number,p_sal number) is
begin
update emp set comm=p_comm where empno=p_empno;
end;
member procedure chang_deptno(p_empno number,p_sal number) is
begin
update emp set deptno=p_deptno where empno=p_empno;
end;
member function get_sal (p_empno number) return number is
v_sal number(10,2);
begin
select sal into v_sal from emp where empno=p_empno;
return v_sal;
end;
member function get_comm(p_empno number) return number is v_comm number(10,2);
begin
select comm into v_comm from emp where empno=p_empno;
RETURN v_comm;
end;
member function get_deptno(p_empno number) return integer
is v_deptno int;
begin
select deptno into v_deptno from emp where empno=p_empno;
return v_deptno;
end;

end;

参考博文:https://blog.csdn.net/Leo1120178518/article/details/86078435


http://www.kler.cn/news/353689.html

相关文章:

  • 初始化列表、静态成员、友元
  • Nacos2.3.2在ubuntu中的部署
  • R语言绘图——坐标轴及图例
  • (41)MATLAB中fftshift函数与ifftshift函数的用法
  • 程序设计说明书
  • 10.17学习
  • C语言双向链表操作
  • I\O进程线程(Day29)
  • leetcode力扣刷题系列——【最小元素和最大元素的最小平均值】
  • uniapp vue3 watch监听使用情况
  • 【微服务】深入探讨微服务架构:现代软件开发的变革之路
  • 【Postgresql】根据响应数据反向实现建表语句与insert语句
  • C++11 wrapper装饰器 bind+function
  • 【服务器知识】Tomcat简单入门
  • 10月17日,每日信息差
  • Leetcode 最小栈
  • 小白投资理财 - 中国股票代号
  • NVIDIA Bluefield DPU上的启动流程4个阶段分别是什么?作用是什么?
  • 机器学习——主要分类
  • 2024软件测试面试大全(答案+文档)