当前位置:首页 > 数据库 > PLSQL

PLSQL

2022年11月08日 15:42:11数据库8

简单的输出

declare --简单的在Output输出
begin dbms_output.put_line('asdasd');
end;

定义基本类型变量和赋值

自定义变量个自定义值

 i varchar2(20) :='hello plsql';

手动赋值

age number :=&aaa;--弹出对话框为age赋值

通过查询表定义变量,赋值

 declare 
vsal emp.sal%type;--定义变量属性个emp表的sal字段是一个类型
begin 
  select sal into vsal from emp where empno=7369;--查询出sal并赋值给vsal
  dbms_output.put_line(vsal);--打印vsal
  end;

定义对象变量

declare 
vrow emp%rowtype;--定义对象类型为emp的所有字段
begin
 select * into vrow from emp where empno=7369;--把查询到一条数据赋值给vrow
 dbms_output.put_line(vrow.ename || '_______' || vrow.sal);--输出
end;

if else

declare 
age number :=20;
begin
  if age<=18 then
    dbms_output.put_line('未成年');
    elsif age >18 and age <24 then
      dbms_output.put_line('青年');
elsif age >=24 and age <40 then
  dbms_output.put_line('中年');
else
    dbms_output.put_line('老年');
end if;
end;

循环

普通循环

declare 
begin 
  for i in  1..10 loop
      dbms_output.put_line(i);
end loop;
end;

反转循环

从10开始循环到1

多加了一个reverse

declare 
begin 
  for i in reverse 1..10 loop
      dbms_output.put_line(i);
end loop;
end;

自定义结束条件循环

declare 
i number :=1;
begin
  loop
      dbms_output.put_line(i);
  i := i+1;
  exit when i>10;--设置结束条件
  end loop;
end;

游标

作用:封装查询多条语句,可以进行逐行操作

普通声明

declare
cursor cur_emp is select  *from emp;--声明一个游标
vrow emp%rowtype;--声明变量
begin
  open cur_emp;
  loop
  fetch cur_emp into vrow;--提取一行数据
  dbms_output.put_line(vrow.ename || vrow.sal);
  exit when cur_emp%notfound;--结束条件
  end loop;
  close cur_emp;
end;

打开游标时给游标赋值

--查询10号部门的员工
declare 
cursor cur_emps(vdeptno number ) is select *from emp where deptno= vdeptno;--声明游标的时候,给游标后面加变量
vrow emp%rowtype;
begin
open cur_emps(10);  --给有标的变量赋值
loop
fetch cur_emps into vrow;
exit when cur_emps%notfound;--提取一行数据
dbms_output.put_line(vrow.ename || '__________'|| vrow.sal);
end loop;
close cur_emps;
end;

for循环遍历游标

--fro循环遍历游标
declare 
cursor cur_emp is select *from emp;
begin
for vrow in cur_emp loop                    --for循环自动声明vrow的类型
  dbms_output.put_line(vrow.ename);
end loop;
end;

系统引用型游标

--系统引用型游标
declare 
    cur_emps sys_refcursor;--声明一个游标
    vrow emp%rowtype;
    begin
      open cur_emps for select *from emp;
      loop
        fetch cur_emps into vrow;
      exit when cur_emps%notfound;
      dbms_output.put_line(vrow.ename);
        end loop;
        close cur_emps;
end;

例外(异常)

常见例外

 	   zero_divide : 发生了除零异常
       value_error: 类型转换异常
       no_data_found: 空指针异常,没有找到数据
       too_many_rows : 查询出多行记录,但是赋值给了单行变量

简单实现

declare
i number;
begin
  i :=5/0;
exception
  when zero_divide then   --当发生除零异常时
    dbms_output.put_line('发生了除零异常');
end;

存储过程(可执行的代码片段)

实际上就是将一段编译好了的PLSQL代码片断,封装在数据库服务器中

1,可以方便直接调用

  1. 能够提高执行效率

  2. 提高代码的复用性

    创建一个存储过程的方法

    格式

    --存储过程
    create or replace procedure 方法名(参数名 in 参数类型,参数名 in 参数类型)--创建一个方法,需要传入两个参数(当前传入的是员工的编号和员工的工资)
    is
    currsal number;--声明变量的地方
    begin
    -- 要执行的sql语句
    commit;--提交
    end;

--存储过程
create or replace procedure pro_addsal(vempno in number,vcount in number)--创建一个方法,需要传入两个参数(当前传入的是员工的编号和员工的工资)
is 
currsal number;--声明一个变量
begin
  select sal into currsal from emp where empno=vempno;--查询传入的员工编号的当前工资
dbms_output.put_line('涨薪前:'||currsal);--打印涨薪前的工资
update emp set sal=currsal+vcount where empno=vempno;--执行涨薪语句
dbms_output.put_line('涨薪后:'||(currsal+vcount));--打印涨薪后的工资
commit;--提交
end;

执行

第一种执行方式(简单常用)

call pro_addsal(7369,100);

第二中执行方式

declare
begin
   proc_addsal(7369,-100);
end;

存储函数

函数有返回, 过程没有返回值

函数存在得到意义是给过程去调用的

创建

格式

create or replace function 函数名(vempno number) return 返回类型
is
yearsal number;--生命变量的地方
begin
执行sql语句的地方
return yearsal;--返回参数
end;

--查询员工的年薪的函数
create or replace function fun_getYearSal(vempno number) return number--传入员工编号,返回年薪
is
yearsal number;
begin 
  select sal*12+nvl(comm,0) into yearsal from emp where empno=vempno;
  return yearsal;
end;

执行存储函数

plsql代码片段执行

--调用
declare 
vyearsal number;
begin
  vyearsal := fun_getYearSal(7369);
  dbms_output.put_line(vyearsal);
  end;

sql语句执行

select  fun_getYearSal(7369)from dual;

作者:猥琐熊花子酱
来源链接:https://www.cnblogs.com/AngeLeyes/p/7380640.html

版权声明:
1、JavaClub(https://www.javaclub.cn)以学习交流为目的,由作者投稿、网友推荐和小编整理收藏优秀的IT技术及相关内容,包括但不限于文字、图片、音频、视频、软件、程序等,其均来自互联网,本站不享有版权,版权归原作者所有。

2、本站提供的内容仅用于个人学习、研究或欣赏,以及其他非商业性或非盈利性用途,但同时应遵守著作权法及其他相关法律的规定,不得侵犯相关权利人及本网站的合法权利。
3、本网站内容原作者如不愿意在本网站刊登内容,请及时通知本站(javaclubcn@163.com),我们将第一时间核实后及时予以删除。


本文链接:https://www.javaclub.cn/database/68499.html

标签: PLSQL
分享给朋友:

“PLSQL” 的相关文章

使用PLSQL Developer连接远程数据库的两种方法

使用PLSQL Developer连接远程数据库的两种方法

使用plsql连接远程数据库,不仅要安装PLSQL Developer,还需要安装oracle instantclient客户端,并将PLSQL Developer的tools->preferences connection的oracle home...

PLSQL安装与使用

PLSQL安装与使用

1.下载 PLSQL14下载地址: https://cloud.189.cn/web/share?code=e63UnujmYnI3 官网下载:https://www.allroundautomations.com/ 2.安装 3.激活...

Oracle数据库安装+PLSQL安装配置整理

Oracle数据库安装+PLSQL安装配置整理

1、Oracle安装过程   1.1 下载11g安装包 oracle Database 11g 第 2 版 (11.2.0.1.0) 标准版、标准版 1 以及企业版,适用于 Microsoft Windows (x64) 的 Oracle Databa...

PLSQL注册码

Product code:lhsuyk8rp65b3mp3xpd875ppqtng4nprSerial number:75282 Password:xs374ca   网上自己找的,我可以用 作者:大冉啊...

PLSQL过期注册问题

PLSQL过期注册问题

1、一个月没有打开PLSQL工具,再次打开时,显示过期需要注册,截图如下: 解决办法:输入注册码(注册码来源于:https://zhidao.baidu.com/question/1894425037332408300.html)   &n...

PLSQL developer 连接不上64位Oracle 的解决方法

PLSQL developer 连接不上64位Oracle 的解决方法

Windows 64位下装Oracle 11g 64位,PLSQL Developer使用出现以下问题: 1、Database下拉框为空: 2、强制输入用户名、密码及Database,登录弹出: ** 报错: Initi...

Oracle数据库基本操作(四) —— PLSQL编程

本文主要介绍Oracle中PLSQL的基本语法——if条件判断、三种循环、游标、例外、存储过程、存储函数以及触发器。   Procedure Language 实际上是Oracle对SQL语言的能力扩展,让SQL语言拥有了if条件判断,for循环等处理。 一、P...

Oracle学习(十五)PLSQL安装

Oracle学习(十五)PLSQL安装

PS:由于原来一直用的旧版本的PLSQL客户端,查看执行计划有些数据无法展示,所以今天换一波新版本的使用,记录下安装和使用流程。 PLSQL(oracle数据可视化工具) 一、下载    我用的13的版本,把...

PLSQL安装、PLSQL汉化、激活

PLSQL安装、PLSQL汉化、激活

一、准备工作     1、点击下载PLSQL,本次安装的PLSQL版本为12.0.7,建议安装64位。     2、下载PLSQL时,版本旁边会有个“Language pack”的链接,点击后左侧选择“Chinese”即可下载汉化包。...

plsql8下载|plsql8最新版下载|plsql下载

plsql pl/SQL Developer 是一个为 Oracle 数据库开发存储程序单元的集成开发环境(IDE),使用 PL/SQL Developer,你能方便地创建你的客户端/服务器应用程序的服务器部分。 到目前为止,从最差处想,你还可以完成如下工作: • 使用文本编辑器...

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。