PL/SQL 入门学习(一)

PL/SQL 入门学习(一)在学校的时候虽说上过PL/SQL这门课,然并卵,只恨当时啊!工作关系,需要用到Oracle存储过程。我就简单看了一些教程,特此记录一下。首先,先介绍一下PL/SQL是什么?PL/SQL是是由甲骨文公司在90年代初开发,以提高SQL的功能。PL/SQL是嵌入在Oracle数据库中的编程语言之一。PL/SQL是Oracle数据库对SQL语句的扩展。在普通SQL语句的使用上增加了编程语言的特点…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

前言:本博客分为两篇,学完之后就可以在项目中使用存储过程进行开发。

在学校的时候虽说上过PL/SQL这门课,然并卵,只恨当时啊!工作关系,需要用到Oracle存储过程。我就简单看了一些教程,特此记录一下。

首先,先介绍一下PL/SQL 是什么?
PL/SQL是是由甲骨文公司在90年代初开发,以提高SQL的功能。PL/SQL是嵌入在Oracle数据库中的编程语言之一。PL/SQL是Oracle数据库对SQL语句的扩展。在普通SQL语句的使用上增加了编程语言的特点,所以PL/SQL就是把数据操作和查询语句组织在PL/SQL代码的过程性单元中,通过逻辑判断、循环等操作实现复杂的功能或者计算的程序语言。

总结就是:PL/SQL是一门为扩展Oracle中SQL功能的编程语言。(我他么竟然现在才知道!!!)好吧,所以说,学这个怎么能没有Oracle数据库呢,这里有关与Oracle数据库的下载和安装的博文

在 pl/sql dev 开发工具中打开 SQL commoned 窗口可以进行PL/SQL 开发。 在左上角有输出框。可以查看由dbms_output.put_line( )得到的结果。
先来个Hello world 展示一下吧!

declare
    msg varchar(20);
begin
    msg := 'Hello world ! ';
    
    dbms_output.put_line(msg);

exception
    -- 单行注释
    /*
     * 多行注释 ,这部分是异常处理模块,可有可无。
     */
end;

declare 声明部分 – 所有变量,游标,子程序,和其他元素
begin – end ; – 程序主体,可执行命令

PL/SQL中常见符号解释:
||     字符串连接符
:=    赋值运算符
%    属性索引 使用%type可以使变量获得与字段相同的数据类型,用于不知道给什么类型才合适的变量
=     相等运算符

谈一种编程语言,肯定要说变量和数据类型呀!

PL/SQL 变量命名 : 由数字,字母,下划线,美元符号组成。字母开头。
变量分类:局部变量和全局变量。

变量的常见类型:
varchar2 : 可变长字符串
int : 整数类型
number (precision,scale) :
1. precision表示数字中的有效位,如果没有指定precision的话,oracle将使用38作为精度;
2. 如果scale大于零,表示数字精度到小数点右边的位数;scale默认设置为0;如果scale小于零,oracle将把该数字取舍到小数点左边的指定位数。

clob: 用于存储字符大块数据在数据库中 大小为 8 – 128 TB
date : 日期和时间

变量的定义分为局部变量和全局变量。

DECLARE
    -- Global variables
    num1 number := 95;
    num2 number := 85;
BEGIN
    dbms_output.put_line('Outer Variable num1: ' || num1);
    dbms_output.put_line('Outer Variable num2: ' || num2);
    DECLARE
        -- Local variables
        num1 number := 195;
        num2 number := 185;
    BEGIN
        dbms_output.put_line('Inner Variable num1: ' || num1);
        dbms_output.put_line('Inner Variable num2: ' || num2);
    END;
END;

SQL的SELECT INTO子句给PL/SQL变量赋值

declare
  c_id customers.id%type := 1;
  c_name customers.name%type;
  c_addr customers.address%type;
  c_sal customers.salary%type;
begin
  select name,address,salary into c_name,c_addr,c_sal from customers where id = c_id;
  dbms_output.put_line('Customer '||c_name||' from '||c_addr||' earns '||c_sal);
end;

PL/SQL 中的常量:

PI constant number := 3.14;
很不习惯呀,常量和变量名放在前面,数据的类型放在后面。。。

PL/SQL 中的运算符:
这里写图片描述
PL/SQL 中的条件控制语句:
这里写图片描述
注意: 每一次 if 结构结束都要用 end if; 这才表示 if 结束。

DECLARE
    a number(3) := 100;
BEGIN
    IF ( a = 10 ) THEN
        dbms_output.put_line('Value of a is 10' );
    ELSIF ( a = 20 ) THEN
        dbms_output.put_line('Value of a is 20' );
    ELSIF ( a = 30 ) THEN
        dbms_output.put_line('Value of a is 30' );
    ELSE
        dbms_output.put_line('None of the values is matching');
    END IF;
    dbms_output.put_line('Exact value of a is: '|| a );
END;

CASE 结构:

declare
  grade char(1) := 'A';
begin
  case grade
    when 'A' then dbms_output.put_line('A');
    when 'B' then dbms_output.put_line('B');
    else dbms_output.put_line('NO');
  end case;
end;

PL/SQL 中的循环控制语句:
这里写图片描述
举例说明:

DECLARE
    x number := 10;
BEGIN
    LOOP
        dbms_output.put_line(x);
        x := x + 10;
        IF x > 50 THEN
            exit;
        END IF;
    END LOOP;
    -- after exit, control resumes here
    dbms_output.put_line('After Exit x is: ' || x);
END;
DECLARE
    a number(2) := 10;
BEGIN
    WHILE a < 20 LOOP
        dbms_output.put_line('value of a: ' || a);
        a := a + 1;
    END LOOP;
END;
DECLARE
    a number(2);
BEGIN
    FOR a in 10 .. 20 LOOP   -- 10 .. 20 表示10-20 全包含
        dbms_output.put_line('value of a: ' || a);
    END LOOP;
END;

常用的操作字符串的函数:
UPPER(x) :x转换为大写字母,并返回该字符串
TRIM([trim_char FROM) x) : 从左侧和右侧修剪x字符的空格
SUBSTR(x, start [, length]) : 返回x的一个子开始于由start指定的位置。可选长度为子字符串
CHR(x) : 返回字符 x 的 ASCII 值
CONCAT(x, y) : 连接字符串x和y,并返回附加的字符串
INITCAP(x) : 每个单词的首字母x中转换为大写,并返回该字符串
INSTR(x, find_string [, start] [, occurrence]) :搜索find_string在x中并返回它出现的位置
INSTRB(x) : 返回另一个字符串中字符串的位置,但返回以字节为单位的值
LENGTH(x) : 返回x中的字符数
LOWER(x) : 在x转换为小写字母,并返回该字符串
LTRIM(x [, trim_string]) : 从x的左修剪字符

本节就先看到这里吧!下一篇再整理一下数组,函数,存储过程等方面的知识。

赶紧来学习吧!PL/SQL 入门学习(二)

PS. 以上资料这自于易百教程https://www.yiibai.com/plsql/

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/171255.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 将链接地址转换为二维码并且复制文字_二维码怎么转换成链接

    将链接地址转换为二维码并且复制文字_二维码怎么转换成链接前言:我的需求是讲链接地址转换成二维码,供用户去使用并展示H5端,这里会说到一些小细节,先上代码吧~1.html结构2.生成二维码3.复制二维码要注意的一点是:首先二维码的密度是根据参数的多少来显示的,参数如果特别多,就会导致二维码密度太密,用户拿手机是扫不出来的.解决方案:1.要后端或者自己写一个接口专门放这些地址,可以理解成压缩.然后拿到压缩的东西再去转码.2.把在另外一端能获取到的参数,通过方式获取到,在转码的时候尽量减少参数的携带,带上必要..

    2022年9月6日
    3
  • struts 2 漏洞学习总结

    struts 2 漏洞学习总结struts2最近几个漏洞分析&稳定利用payloadhttp://drops.wooyun.org/papers/9020×00背景看到网上关于struts2利用的文章非常多,但是对于漏洞触发跟踪分析的文档比较少,闲来无事跟踪了一下struts最近吵得比较火的两个漏洞,研究了一下能够稳定利用的payload。0x01S2-008

    2022年7月19日
    16
  • java数组乱码_java输入数组结果出现乱码怎么处理[通俗易懂]

    java数组乱码_java输入数组结果出现乱码怎么处理[通俗易懂]中文乱码是因为编码格式不一致导致的。进入Eclipse,导入一个项目工程,如果项目文件的编码与工具编码不一致将会造成乱码。如果要使插件开发应用能有更好的国际化支持,能够最大程度的支持中文输出,则最好使Java文件使用UTF-8编码。修改默认编码:在菜单导航栏上Window–>Preferences打开”首选项”对话框,左侧导航树,导航到General–>Workspace。…

    2022年6月26日
    34
  • 服务器国产linux操作系统,国产linux操作系统适于做服务器系统的有哪些[通俗易懂]

    服务器国产linux操作系统,国产linux操作系统适于做服务器系统的有哪些[通俗易懂]如果是新人的话,首先软件的依赖问题足够让你头疼半天的了。推荐新人使用ubuntu、deepin这些比较容易入手的系统开始学习。另外,Linux不是一个系统,而是一个系统内核。在这个内核的基础上加上各种需要的部分,比如GUI。而整合出来的发行版本才可以称之为系统,我之前提到的Ubuntu、Deepin就是发行版本之一。真的要介绍起来,恐怕要说好多也说不完,毕竟是一个系统嘛,从核心到桌面呈现出来的东西…

    2022年5月17日
    162
  • 常用乘法公式_初中乘法公式有哪些

    常用乘法公式_初中乘法公式有哪些1、平方差公式$$a^2b^2=(a+b)(ab)$$2、完全平方公式$$(a±b)^2=a^2±2ab+b^2$$3、完全立方公式$$(a±b)^3=a^

    2022年8月4日
    3
  • serialVersionUID作用

    serialVersionUID作用

    2021年12月8日
    48

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号