为了账号安全,请及时绑定邮箱和手机立即绑定

Oracle数据库开发必备利器之PL/SQL基础

难度初级
时长 3小时22分
学习人数
综合评分9.57
114人评价 查看评价
9.8 内容实用
9.4 简洁易懂
9.5 逻辑清晰
  • -- 系统例外:too_many_rows set serveroutput on declare pename emp.ename%type; begin -- 查询所有10号部门的员工姓名 select ename into pename from emp where deptno=10; exception when too_many_rows then dbms_output.put_line("select into 匹配了多行"); when others then dbms_output.put_line("其他例外"); end; /
    查看全部
  • set serveroutput on declare pename emp.ename%type; begin -- 查询员工号是1234的员工姓名 select ename into pename from emp where empno=1234; exception when no_data_found then dbms_output.put_line("没有找到该员工"); when others then dbms_output.put_line("其他例外"); end; /
    查看全部
  • 例外(Exception) 是程序设计语言提供的一种功能,用来增强程序的健壮性和容错性。 1. 系统例外 No_data_found (没有找到数据) Too_many_rows (select ...into 语句匹配多个行) Zero_Divide (被零除) Value_error (算术或转换错误) Timeout_on_resource (在等待资源时发生超时)
    查看全部
  • -- 查询某个部门中员工的姓名 set serveroutput on declare -- 定义带参数的光标,形参 cursor cemp(dno number) is select ename from emp where deptno=dno; pename emp.ename%type; begin open cemp(10); -- 传入实参 loop fetch cemp into pename; exit when cemp%nofound; dbms_output.put_line(pename); end loop; close cemp; end; /
    查看全部
  • /* 1. 光标的属性 %found %notfound %isopen; 判断光标是否打开 true / false %rowcount; 影响的行数 2. 光标数的限制:默认情况下,Oracle数据库只允许在同一个回话中,打开300个光标 -- 切换到管理员 show user conn sys/password@192.168.56.101:1521/orcl as sysdba show parameter -- 做的是模糊查询 show parameter cursor -- 修改光标数的限制 alter system set open_cursors=400 scope=both; scope的取值:both、memory(只更改当前实例,不更改参数文件)、spfile(只更改参数文件,不更改当前实例,数据库需要重启才会生效) */ set serveroutput on declare cursor cemp is select empno,empjob from emp; pempno emp.empno%type; pjob emp.empjob%type; begin open cemp; if cemp%isopen then dbms_output.put_line('光标已经打开'); else dbms_output.put_line('光标没有打开'); end if; loop fetch cemp into pempno,pjob; exit when cemp%nofound; dbms_output.put_line('rowcount:'||cemp%rowcount); end loop; close cemp; end; /
    查看全部
  • -- 给员工涨工资,总裁1000,经理800,其他400 set serveroutput on; declare -- 定义光标代表给哪些员工涨工资 -- alter table "SCOTT"."EMP" rename column "JOB" to empjob cursor cemp is select empno,empjob from emp; pempno emp.empno%type; pjob emp.empjob%type; begin rollback; -- 打开光标 open cemp; loop -- 取出一个员工 fetch cemp into pempno,pjob; exit while cemp%notfound; -- 判断员工的职位 if pjob='PRESIDENT' then update emp set sal=sal+1000 where empno=pempno; elseif pjob='MANAGER' then update emp set sal=sal+800 where empno=pempno; else update emp set sal=sal+400 where empno=pempno; end if; end loop; -- 关闭光标 close cemp; -- 对于Oracle,默认的事务隔离级别是 read committed -- 事务的ACID:原子性、一致性、隔离性、持久性 commit; dbms_output.put_line("涨工资完成"); end; /
    查看全部
  • -- 一个具体的光标 /* 光标的属性 1. %found 2. %notfound */ cursor c1 is select ename from emp; -- 从光标中取值 open c1; (打开光标执行查询) -- 取一行光标的值: fetch c1 into pename; (取一行到变量中) fetch的作用: 1. 把当前指针指向的记录返回 2. 将指针指向下一条记录 -- 关闭光标 close c1; (关闭游标释放资源) -- 查询并打印员工的姓名和薪水 set serveroutput on declare -- 定义一个光标 cursor cemp is select ename,sal from emp; -- 为光标定义对应的变量 pename emp.ename%type; psal emp.sal%type; begin -- 打开光标 open cemp; loop -- 取一条记录 fetch cemp into pename,psal; -- into后面的顺序应与上面的select...一致 exit when cemp%notfound ; -- 打印结果 dbms_output.put_line(pename||'的薪水是'||psal); end loop; -- 关闭光标 close cemp; end; /
    查看全部
  • -- PL/SQL 对大小写不敏感 -- 使用while循环打印数字的1~10 set serveroutput on declare -- 定义循环变量 pnum number:= 1; begin while pnum <= 10 loop -- 循环体 dbms_output.put_line(pnum); -- 使该变量 +1 ,在PL/SQL中 不能使用 ++ pnum := pnum + 1; end loop; end; / -- 使用loop循环打印1~10 set serveroutput on declare -- 定义循环变量 pnum number := 1; begin loop -- 退出条件:循环变量大于10 exit when pnum > 10; -- 打印该变量的值 dbms_output.put_line(pnum); pnum := pnum + 1; end loop; end; / -- 循环区间: 1..100 --> 取值: 从 1 到 100 -- 使用for循环打印1~10 set serveroutput on declare -- 定义循环变量 pnum number := 1; begin for pnum in 1..10 loop dbms_ouput.put_line(pnum); end loop; end; /
    查看全部
  • /* 判断用户从键盘输入的数字 1. 如何使用if语句 2. 接受一个键盘输入(都是字符串) */ set serveroutput on -- 接受一个键盘输入 -- num: 是一个地址值:含义是:在该地址上保存了输入的值 accept num prompt '请输入一个数字'; declare -- 定义变量保存用户从键盘输入的数字 pnum number:=&num; begin -- 执行if语句进行条件判断 if pnum = 0 then dbms_output.put_line('您输入数字是0'); elseif pnum = 1 then dbms_output.put_line('您输入的是1'); elseif pnum = 2 then dbms_output.put_line('您输入的是2'); else dbms_output.put_line('其他数字'); end if; end; /
    查看全部
  • 引用型变量: 举例: my_name emp.ename%type; --引用emp表中ename列的数据类型作为my_name的变量类型 -- 引用型变量 set serveroutput on declare -- 定义引用型变量:查询并打印7839的姓名和薪水 -- pename varchar2(20); -- psal number; pename emp.ename%type; psal emp.sal%type; begin -- 得到7839的姓名和薪水 select ename,sal into pename,psal from emp where empno=7839; -- select后的顺序 与 into 后面的应保持一致 dbms_output.put_line(pename||'的薪水是'||psal); end; / 记录型变量: -- 表中一行的类型,可以理解成数组 举例: emp_rec emp%rowtype; 记录型变量分量的引用: emp_rec.ename:='ADAMS'; -- 使用记录型变量,查询并打印7839的姓名和薪水 set serveroutput on declare -- 定义记录型变量:注意代表一行 emp_rec emp%rowtype; begin -- 得到7839一行的信息 select * into emp_rec from emp where empno=7839; -- 打印姓名和薪水 dbms_output.put_line(emp_rec.ename||'的薪水是'||emp_rec.sal); end; /
    查看全部
  • PL/SQL的程序结构 declare 说明部分 (变量说明、光标申明、例外说明) 定义基本变量或常量 类型:char,varchar2,date,number,boolean,long 例: pname varchar2(20); pdate date; married boolean := true; -- 赋值 := pnumber number(7,2); begin 语句序列 (DML语句) pnumber:=1; dbms_output.put_line(pnumber); pname:='Tom'; dbms_output.put_line(pname); pdate:=sysdate; dbms_output.put_line(pdate); exception 例外处理语句 end; /
    查看全部
  • 1. PL/SQL 是S对QL语言的扩展 2. PL/SQL 是面向过程的语言(循环等) 不同数据库的SQL扩展 Orable:PL/SQL DB2:SQL/PL SQL Server:Transac-SQL(T-SQL)
    查看全部
    0 采集 收起 来源:PL/SQL简介

    2017-10-01

  • -- 打印 Hello Word declare -- 说明部分(变量,光标或者例外)(如果没有说明部分,“declare”可以不写) begin -- 程序体 dbms_output.put_line('Hello World'); end; -- 表示结束 / -- 表示退出这个编辑环境并且执行这个PL/SQL程序(此程序没有语法错误) -- 打开输出开关 set serveroutput on / -- 查看程序包的结构 desc dbms_output
    查看全部
  • 光标的属性 %found %notfound
    查看全部
  • fetch的作用
    查看全部

举报

0/150
提交
取消
课程须知
亲,要学习本门课程只需要熟练使用Oracle的SQL语句就可以了,可以参考慕课网的课程《Oracle数据库开发必备利器之SQL基础》呦!
老师告诉你能学到什么?
1、能够熟练掌握PL/SQL的基本语法 2、能够熟练使用光标和例外 3、能够熟练使用PL/SQL进行开发

微信扫码,参与3人拼团

意见反馈 帮助中心 APP下载
官方微信
友情提示:

您好,此课程属于迁移课程,您已购买该课程,无需重复购买,感谢您对慕课网的支持!