设为首页 收藏本站
查看: 1028|回复: 0

[经验分享] Oracle系列:(28)PLSQL

[复制链接]

尚未签到

发表于 2018-9-7 12:17:20 | 显示全部楼层 |阅读模式
准备篇  col empno for 9999;
  col ename for a10;
  col job for a10;
  col mgr for 9999;
  col hiredate for a12;
  col sal for 9999;
  col comm for 9999;
  col deptno for 99;
  col tname for a40;
  set pagesize 80;
  1、SQL对比PLSQL
  SQL99是什么
  (1)是操作所有关系型数据库的规则
  (2)是第四代语言
  (3)是一种结构化查询语言
  (4)只需发出合法合理的命令,就有对应的结果显示
  SQL的特点
  (1)交互性强,非过程化
  (2)数据库操纵能力强,只需发送命令,无需关注如何实现
  (3)多表操作时,自动导航简单,例如:
     select emp.empno,emp.sal,dept.dname  
     from emp,dept
  
     where emp.deptno = dept.deptno
  (4)容易调试,错误提示,直接了当
  (5)SQL强调结果
  PLSQL是什么
  是专用于Oracle服务器,在SQL基础之上,添加了一些过程化控制语句,叫PLSQL
  过程化包括有:类型定义,判断,循环,游标,异常或例外处理。。。
  PLSQL强调过程
  为什么要用PLSQL
  因为SQL是第四代命令式语言,无法显示处理过程化的业务,所以得用一个过程化程序设计语言来弥补SQL的不足之处,
  SQL和PLSQL不是替代关系,是弥补关系
  PLSQL程序的完整组成结构如下:
[declare]  
    变量声明;
  
    变量声明;
  
begin
  
    DML/TCL操作;
  
    DML/TCL操作;
  
[exception]
  
    例外处理;
  
    例外处理;
  
end;
  
/
  注意:在PLSQL程序中,;号表示每条语句的结束,/表示整个PLSQL程序结束
  书写PLSQL的工具有:
  (1)SQLPLUS工具
  (2)SQLDeveloper工具
  (3)第三方工具(PLSQL & 其它)
  PLSQL与SQL执行有什么不同
  (1)SQL是单条执行的
  (2)PLSQL是整体执行的,不能单条执行,整个PLSQL结束用/,其中每条语句结束用;号
  2、PLSQL类型
  写一个PLSQL程序,输出"hello world"字符串,语法:dbms_output.put_line('需要输出的字符串');
begin  
    --向SQLPLUS客户端工具输出字符串
  
    dbms_output.put_line('hello 你好');
  
end;
  
/
  注意:
  dbms_output是oracle中的一个输出对象
  put_line是上述对象的一个方法,用于输出一个字符串自动换行
  设置显示PLSQL程序的执行结果,默认情况下,不显示PLSQL程序的执行结果,语法:set serveroutput on/off;
set serveroutput on;
DSC0000.jpg

  使用基本类型变量,常量和注释,求10+100的和
declare  
    --定义变量
  
    mysum number(3) := 0;
  
    tip varchar2(10) := '结果是';
  
begin
  
    /*业务算法*/
  
    mysum := 10 + 100;
  
    /*输出到控制器*/
  
    dbms_output.put_line(tip || mysum);
  
end;
  
/
DSC0001.jpg

  输出7369号员工姓名和工资,格式如下:7369号员工的姓名是SMITH,薪水是800,语法:使用表名.字段%type
declare  
    --定义二个变量,分别装姓名和工资
  
    pename emp.ename%type;
  
    psal   emp.sal%type;
  
begin
  
    --SQL语句
  
    --select ename,sal from emp where empno = 7369;
  
    --PLSQL语句,将ename的值放入pename变量中,sal的值放入psal变量中
  
    select ename,sal into pename,psal from emp where empno = 7369;
  
    --输出
  
    dbms_output.put_line('7369号员工的姓名是'||pename||',薪水是'||psal);
  
end;
  
/
DSC0002.jpg

  输出7788号员工姓名和工资,格式如下:7788号员工的姓名是SMITH,薪水是3000,语法:使用表名%rowtype
declare  
    emp_record emp%rowtype;
  
begin
  
    select * into emp_record from emp where empno = 7788;
  
    dbms_output.put_line('7788号员工的姓名是'||emp_record.ename||',薪水是'||emp_record.sal);
  
end;
  
/
DSC0003.jpg

  何时使用%type,何时使用%rowtype?
  当定义变量时,该变量的类型与表中某字段的类型相同时,可以使用%type
  当定义变量时,该变量与整个表结构完全相同时,可以使用%rowtype,此时通过变量名.字段名,可以取值变量中对应的值
  项目中,常用%type
  3、PLSQL判断
  使用if-else-end if显示今天星期几,是"工作日"还是"休息日"
declare  
    pday varchar2(10);
  
begin
  
    select to_char(sysdate,'day') into pday from dual;
  
    dbms_output.put_line('今天是'||pday);
  
    if pday in ('星期六','星期日') then
  
            dbms_output.put_line('休息日');
  
    else
  
            dbms_output.put_line('工作日');
  
    end if;
  
end;
  
/
DSC0004.jpg

  从键盘接收值,使用if-elsif-else-end if显示"age

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.iyunv.com/thread-566056-1-1.html 上篇帖子: Oracle系列:(27)小结 下篇帖子: 如何简化 Oracle Linux 6 上的 Oracle Database 11g 安装
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表