zoukankan      html  css  js  c++  java
  • PLsql(一)

    PLSQL是专用于Oracle服务器,在SQL基础之上,添加了一些过程化控制语句,叫PLSQL过程化包括有:类型定义,判断,循环,游标,异常或例外处理

    PLSQL强调过程

    一、plsql语句块

    PL/SQL程序都是以块(block)为基本单位,整个PL/SQL块分三部分:

    • 声明部分(用declare开头) --没有变量,则declare可以省略
    • 执行部分(以 begin开头)其中执行部分是必须的,其他两个部分可选
    • 异常处理部分(以exception开头)
    • 结束:end

    1、Plsql语句块分类

    • 匿名块:动态构造只执行一次(main)
    • 子程序:存储在数据库中的存储过程,函数及包等。当在数据库建立好后可以在其他子程序中调用
    • 触发器:当数据库发生操作时,会触发一些事件,从而自动执行相应的程序

    二、Plsql中的变量类型

    1、Sql标准数据类型

    2、变量的使用

    plsql中声明和执行部分要严格分开,在java中时先声明后写变量plsql中相反 先声明再写数据类型

    变量在声明后没有赋值输出结果为空

    例:

    3、变量的命名方法

    4、变量的作用域 

    begin和end之间

    例如:

    输出结果为:

    12345
    1.23

    5、空语句

    --空语句NULL  执行语句中必须写东西

    三、PLSQL中使用sql

    PLSQL中使用SQL语句的几种情况:

    • DML或DCL语句:直接执行 
    • 查询语句:SELECT...INTO 或者 游标
    • DDL语句:动态SQL执行 

    --更新100员工,工资增加1块钱 :(不能再执行块中直接输出select语句)

    • 声明变量:员工的编号
    • 声明变量:工资追加的钱数

    SELECT...INTO...的使用

    语法:SELECT 列1,列2,…… INTO 变量1,变量2,……

    --查询某个员工编号的姓名和工资:

    • 员工编号
    • 姓名
    • 工资

    列和变量的顺序,个数必须保持一致(如果没有数据则会抛出异常,返回的结果超过一行 也会有异常)

    --查询某个员工编号的姓名,工资,入职日期,部门编号:(以上思路 我们需要声明多个变量) 

    --记录类型record(java中处理多个数据我们可以封装为对象,与之类似)

    --查询某个员工编号的姓名,工资,入职日期,部门编号

    四、参照引用类型(参照已有的数据类型)

    --参照引用变量类型:变量名称%TYPE

    --参照引用表中的列类型:表名.列名%TYPE

    --参照引用表的记录类型:表名%ROWTYPE

    1、变量名称%TYPE

    2、表名.列名%TYPE

    --查询某个员工编号的姓名,工资,入职日期,部门编号(参照类型)

    3、表名%ROWTYPE

    --查询某个员工编号的姓名,工资,入职日期,部门编号(参照引用表的记录类型)

    五、PLSQL表类型(可理解为数组)

    /*

    TYPE 自定义类型名称 IS TABLE OF 元素类型

    INDEX BY BINARY_INTEGER;

    */

    数据类型为varchar2(50)

    下标为-7的值为tom,下标为4的值为jack,下标为9的值为rose。

    --表类型的常用属性

    --BULK COLLECT INTO:把查询结果一次性赋给一个表类型的变量,下标自动从1开始递增 

    --查询所有的员工姓名,存储到一个表类型的变量中

    实例:

    --查询所有的员工信息,存储到一个表类型的变量中

    六、DML语句返回值

    --RETURNING语句:DML操作返回值赋给变量

    RETURNING列1,列2,... INTO 变量1,变量2,...

    --更新某个员工的工资,输出这个员工姓名,新工资

    方式1:

    方式2(RETURNING):

    --插入语句中使用RETURNING语句:

    --删除语句中使用RETURNING语句

    七、综合应用

    --DML操作返回多行数据

    --更新某个部门的员工的工资,返回被更新的员工姓名,新工资

    基本和源文章一样,阅读时不理解的地方通过查阅其他资料加上了一些自己的理解。

    参考网址:https://www.cnblogs.com/520gqk/p/9861161.html

  • 相关阅读:
    利用Navicat向MySQL数据库中批量插入多条记录的方法
    《Spring MVC+MyBatis快速开发与项目实战》-黄文毅2019:一书的源码和配套视频下载地址
    MySQL数据库建库时SQL语句中数据库名、表名用引号的问题以及COLLATE utf8_general_ci的含义
    [转]层行列和经纬度坐标之间的相互转化方法(谷歌地图)
    [Web 前端] VML、SVG、Canvas简介
    [Android Pro] 完美解决 No toolchains found in the NDK toolchains folder for ABI with prefix: mips64el-linux-android
    [Android Pro] so 动态加载—解决sdk过大问题
    [Android Pro] https://blog.csdn.net/gaugamela/article/details/79143309
    [web前端] 去哪儿网前端架构师司徒正美:如何挑选适合的前端框架?
    [web前端] yarn和npm命令使用
  • 原文地址:https://www.cnblogs.com/zhuyunlong/p/12176590.html
Copyright © 2011-2022 走看看