ORACLE的组件也可以用PL/SQL去写,后边有存储过程,存储函数,触发器,可以自己来写存储过程,或者叫触发器,那前面有哪些我们就走一走,这里实际上是一本小书了,59页,比较经典版的plsql,我们不能像讲JAVA一样,光讲JAVA基础就讲了几个月的时间了,PL/SQL讲一天,讲一天就讲完了,从前往后我们走一走,PL/SQL是一门高级程序设计语言,然后在各种环境下对ORACLE数据库进行访问,然后他继承与数据库服务器中,他的代码也可以对数据进行快速高效的处理,了解一下就行

他的全称是叫Procedure Language,或者Structured Query Language,就是结构化查询语言,也就是过程语言,它是对SQL语言存储过程语言的扩展,他里面可以定义函数,SQL当时我们讲流程控制的时候,case when then,讲了一个decode,PL/SQL作为一个编程语言了,他就比较全了,就跟JAVA一样,可以有条件判断,也可以有循环,他这里面就有循环了,当然其实它作为一个语言,就像JAVA里面可以定义方法,他这里边也可以定义,不过叫函数了,可以定义函数,这个函数就叫存储函数,还可以定义存储过程,一个有返回值,一个没有返回值,还可以定义触发器,你定义好以后,就像你一个类一样,JAVA里面我们创建一个类,类就存在了,你想调的时候过来调,它是一个面向过程的语言

我们就直接往后过,PL/SQL是ORACLE系统的核心语言,现在他又很多组件也是由PL/SQL来写的,PL/SQL可以使用SQL里面的关键字,增删改查,然后后面就是DCL的,像回滚,设置保存点,增删改查的也要注意,这个select跟SQL里面的不一样,这个叫select什么什么into,到一个变量里,或者到记录类型里,等等,存储到游标的一个对象里,存储到一个游标里,into,多了一个他

介绍就说完了,PL/SQL块结构和组成元素,还有那几部分构成,由三个块构成,叫声明部门,执行部门,异常处理部分

三块对应的有4个关键字,四个关键字 把它隔离成三块,DECLARE,叫声明部分,你在整个执行过程当中,需要用到哪些变量,除了变量之外,还有比如有记录类型,游标,这个东西你给他定义在DELARE里面,就有点类似于JAVA里面的成员变量一样,成员变量不就是直接类完了以后就开始写这个变量,这个你就相当于把这个变量写在这,begin就是你真正开始执行的这个部分,可能要用到你要用到上面声明的这些变量,有点类似于JAVA里面的类方法,类方法有一个入口可以执行,这里是从begin开始执行,然后JAVA程序里面也有异常,他这里也有异常,这个异常如何处理,他单纯加了一块exception,如果你在begin执行的时候,出现异常了,根据你这个异常,也有一个对象,跟你这个对象的类型,然后到我这里去匹配,他用的是when来匹配,when当是这个异常对象的时候,when怎么去处理,when什么对象,怎么怎么处理,我们JAVA里面用的是try catch,try这段代码,当你有异常的catch的时候,你那个对象是哪个类型的放过来,然后在catch那个大括号里面处理,形式不太一样,但是方式是类似的,end表明你这个块结束了,那我们写一个最简单的PL/SQL的一个程序,最简单的是helloworld

在这个PL/SQL中,你要使用的话,你首先要进行这样一个操作,这个是必须的,叫set serveroutput on,没有分号回车

每次你不写这个命令的时候,你就运行完了就没有数据结果,我们就写一个最简单的PL/SQL的程序,helloworld它会有三部分,declare,begin,还有exception,end,end在这要加上分号,最简单的一个helloworld,这里面涉及到声明的变量,或者叫类型,或者叫游标,begin是你程序真正执行的部分,类似于JAVA里的main方法,exception根据begin出现的异常进行处理,提供处理的机制,最后表示结束,这个处理机制他使用的是when,然后then怎么处理,你可以再加上一个再when,然后这样处理,我们讲的异常后面会说,你想写最简单的一个helloworld的话,是不是不用定义变量,没有什么变量,就直接begin了,begin就直接一条语句输出,这不是相当于main方法吗,写输出语句,JAVA里面用的是system.out.println,那这里面谁相当于刚才说的那句话,这个dbms_output.put_line,一个小括号,下划线结束,打印的是helloworld的一个字符串,然后没有异常,没有异常就不写了,就这样,这就是最简单的,他这个把它注掉,helloworld是吧declarebegindbms_output.put_line('helloworld');exceptionend;

因为你这里写了exception但是没有处理,那就是说没有用的,这个表没有异常,把它就可以注了,这个没有声明,他也可以不要了,那我这个程序实际上就三行,这三行是最简洁的方式了,再少也少不了了,begin是你程序的入口,这个是必须要有的,end表示你程序结束,那最简单的不就是一条语句,最简洁的一个条件,格式就这样,这是最简洁的一个程序,helloworldbegindbms_output.put_line('helloworld');end;

那我们写一个比他复杂一点的,复杂一点的,复杂到什么程度,查询一下100号员工的工资,它是100号员工工资的话,我们用SQL语言的话,select salary from employees where employee_id = 100select salary from employees where employee_id = 100;

用PL/SQL的话怎么写,就这样写,declare,先把这个结构写出来,没有异常,end结束,我声明一个变量,我先写一遍再注释,这个变量我们后面会讲到,往后拉的话,变量如何声明,如果是变量的话V开头,常用用C,如果异常开头就用E,记录类型后面加一个下划线record,就像我们写一个主键一样,主键或者外键

增强他的可读性,这儿我定义的是一个变量,所以我就v,是一个工资相关的,然后变量的数据类型,varchar2,20来存,分号结束,就是这个变量我声明了,声明了以后,begin来操作,本质上操作还是用的select语句,只不过是select into,我select salary,into v_sal,from哪个表,employees表,where department_id等于100,这个时候加一个分号,这个呢我select放到这里边,我想给打印出来,dbms_output.put_line(v_sal)给打印出来,打印完以后就end,还是2万4declarev_sal varchar2(20)beginselect salary into v_sal from employees where employee_id = 100;dbms_output.put_line(v_sal);end;

这里说一下,declare你就把他理解成声明,类似于JAVA里面的成员变量位置,我可以在这声明变量,然后这是SQL的一个操作,SQL语句的操作,这里面实现select的操作,select什么什么into什么什么,然后有表的话就from什么什么表,如果有条件的话加上一个where,放到这个变量里,然后呢,打印,最后结束,这是最标准的一个程序

那现在我们说了,不光是想输出100号员工的工资,我还想输出他的email,甚至hire_date,phone_number,都想输出,那你这个变量就多定义几个,还有一个叫email,这个需要注意的是,我这写的不太好,salary是一个number类型的,我给他放在一个varchar里面,最好你的数据类型是他的一致的,20个,两个小数,email你是把这个表的email放到这里,email是个varchar的,这个是varchar2,20个,而且你这个数,不能够比你这个email小,小的时候就放不进去了,可以再声明一个,v_hire_date,date类型的,分号,每一个都是分号结束的,select在这里写明,按照这个顺序填进去,salary,email,hire_date,into v_sal,v_email,v_hire_date,从这个表当中,where到这,然后打印的时候打印,打印他的工资,也打印一下他的email,再打印一下他的hire_date,看一下结果,就是这样declarev_sal number(10,2);v_email varchar2(20);v_hire_date date;beginselect salary,email,hire_date into v_sal,v_email,v_hire_date from employees where employee_id = 100;dbms_output.put_line(v_sal||','||v_email||','||v_hire_date);end;

相较于刚才这个,这里定义了三个变量,这里需要对应,类型也对应,然后这个储值范围要注意,比如v_email,你要给2的话,说字符串缓冲区太小了declarev_sal number(10,2);v_email varchar2(2);v_hire_date date;beginselect salary,email,hire_date into v_sal,v_email,v_hire_date from employeeswhere employee_id = 100;dbms_output.put_line(v_sal||','||v_email||','||v_hire_date);end;

所以你这里声明的类型大小是不能够小于人家本身这个的,email你是要存的这里面的email,这里面的数据类型的一个大小,你这个不能比他小,就是这个,这个完了以后,我们刚才说了,这个数据类型,先说这个吧,数据类型,然后你这样来看,你这个不能比他小,而且数据类型也要一样,我刚才不是声明成他了,我给他改了,你不是要放employees这个表吗,而且是要把里面的salary放到这里,那你这个salary的数据类型,我就放到这儿,使用这样一个形式,这个表明就是v_sal,这个变量的数据类型,跟employees表下的salary数据类型,是一样的,这个相当于动态的来获取一下salary的数据类型,当这个数据类型如果变化的时候,我这儿也跟着改变,那同样的下边这几个,可以给他处理掉,点email,问号type,然后这儿,这个date其实可以不写了,动态的获取一下,这个表对应三个变量的类型,然后这不变,然后打印,照样就出来了declarev_sal employees.salary%type;v_email employees.email%type;v_hire_date employees.hire_date;beginselect salary,email,hire_date into v_sal,v_email,v_hire_date from employeeswhere employee_id = 100;dbms_output.put_line(v_sal||','||v_email||','||v_hire_date);end;

plsql(轻量版)_基本语法相关推荐

  1. plsql(轻量版)_记录类型2

    PL/SQL这一块,整个这一块需要大家掌握什么,就是他基本的格式,PL/SQL,基本的语法格式,如何声明一个变量,然后程序从哪里执行,执行的格式是什么,出现异常怎么处理,基本的语法格式,就这样写吧,第 ...

  2. plsql(轻量版)_触发器

    触发器是许多关系型数据库系统都提供的一项技术,在ORACLE系统里,触发器类似过程和函数,都有声明,执行和异常处理过程的PL/SQL块,这是他创建的一个格式,这个触发器的作用是什么,触发器以独立的对象 ...

  3. plsql(轻量版)_异常处理机制

    一个优秀的程序都应该能够正确的处理各种出错异常,并尽可能的从错误中恢复,ORACLE提供异常来实现错误处理,异常exception这个词还是这个,处理正常执行过程中未预料的事件,他分为预定义的错误,和 ...

  4. plsql(轻量版)_游标的使用2

    游标你们记得,它是处理多行数据的,有点类似于集合里面的迭代器一样,一条条给你遍历打印一下,这个也是给他取出一条条的数据,就要使用到游标14. 利用游标, 调整公司中员工的工资: 工资范围 调整基数0 ...

  5. plsql(轻量版)_游标的使用1

    叫游标的使用,游标,以前没有听过这个名,什么是游标,他的作用是什么,如何来声明,怎么来使用,主要是你要掌握他是干嘛的,怎么用,游标,在PL/SQL程序当中,对于处理多行记录的事务,经常使用游标来实现, ...

  6. plsql(轻量版)_流程控制

    记录类型百分号type,使用它的优点,所引用的数据库列的数据类型不必知道,要不你就得知道它的类型和他的一样的,这里你可以实时改变,列的数据类型改变,我这里也跟着改,动态的来获取你的类型 这里还有个百分 ...

  7. plsql(轻量版)_记录类型1

    定义变量,变量类型的,这个是可变的 这里涉及到一个概念叫记录类型,记录类型是把逻辑相关的数据作为一个单元存储起来,称作一个record,其作用是存储互不相同但逻辑相关的信息,这个叫记录类型,这个是以什 ...

  8. plsql轻量版基本语法

  9. plsql(轻量版)-存储函数存储过程

    ORACLE提供可以把PL/SQL程序存储在数据库中,并可以在任何地方运行他,这样就叫做存储过程或者函数,意思就说白了,就是你之前写的select,什么update,这些东西存储起来,我想把这些操作存 ...

最新文章

  1. python 流式编程_python 使用yield进行数据的流式处理
  2. Kotlin 喧嚣过后,谈谈 Java 程序员未来的出路
  3. 分布式系统开发注意事项
  4. 使用offsetof对结构体指针偏移操作
  5. 立竿见影地把你的 Python 代码提速7倍
  6. 湖南师大计算机学信网,湖南师范大学有计算机专业硕士吗?
  7. 工具之wireshark保存rtp数据
  8. 六神不安,生死命悬一线
  9. JDK和JRE区别和联系
  10. Linux的du命令
  11. 虚无鸿蒙混沌系统,玄幻 鸿蒙混沌选择系统
  12. 2011年11月-2012年10月份 历时一年的 博客回顾
  13. 程序员坐行李箱迎寒风编码2小时,上热搜!你怎么看?
  14. ios 内购 服务器二次验证元宝处理
  15. 一款很好用的调试JS的Eclipse插件
  16. 读书笔记-人品惠及一世
  17. 不可逆加密算法(MD5)
  18. 深度 | Nature论文:无监督表征学习,用电子健康病历增强临床决策
  19. python教学计划与教学大纲,Python基础教程-教学大纲
  20. 山石网科Hillstone防火墙L2TP over ***详细配置步骤(官方最新版)

热门文章

  1. asp.net中将枚举绑定到下拉列表
  2. [silverlight]WCF和Web Service(ASMX)的soap header传输方法
  3. Silverlight-Visifire图表使用示例发布时空白页面的解决办法
  4. Abstract Factory(抽象工厂)实践
  5. 轻量级的日期时间控件Pikaday
  6. BZOJ3028食物——生成函数+泰勒展开
  7. 使用canvas绘制楼梯(canvas直线绘制练习)
  8. 工信部IC power大讲堂(南京)开班,特邀国际名家做核心技术分享
  9. [华为机试练习题]5.IP地址推断有效性
  10. Google Chrome 53 Beta 引入影子 DOM V1