zoukankan      html  css  js  c++  java
  • Oracle学习笔记(九)

    十二、PL/SQL
    1、PL/SQL程序的结构和组成
    示例:给员工涨工资(根据职位涨工资)
    总裁涨1000
    经理涨800
    其他员工涨400

    学习原因:1、操作数据库效率最高
    2、为了后期的存储过程的学习

    2、PL/SQL具体案例
    set serveroutput on
    ----------打印Hello World
    declare
    -----说明部分(变量,光标或者例外)
    begin
    -----程序体
    dbms_output.put_line('Hello World');
    end;

    put_line ----存储过程

    查看方法
    desc dbms_output

    3、什么是PL/SQL程序?
    (1)PL/SQL 意为过程语言的SQL
    (2)PL/SQL是Oracel对sql语言的过程化扩展
    --指在SQL命令语言中增加了过程处理语句(如分支、循环等),使SQL语言具有过程处理能力.
    (3)PL/SQL的提出
    例1、为职工长工资,每人长10%的工资
    update emp set sal=sal*1.1

    特点:命令式的语言

    例2、按职工的职称长工资,总裁长1000元,经理长800元,其他人员长400.(此问题应用PLSQL)


    SQL语言的数据操纵能力+过程语言的数据处理能力=PL/SQL

    PL/SQL是面向过程的语言:但是比过程语言更加的简单、高效、灵活、实用。

    不同数据库的SQL扩展:
    Oracle:PL/SQL
    DB2:SQL/PL
    SQl Server:Transac-SQL(T-SQL)

    4、PL/SQL的程序结构
    declare
    说明部分(变量说明、光标申明、例外说明)
    begin
    语句序列(DML语句)
    exception
    例外处理语句
    end;
    /

    说明部分:
    定义基本变量

    类型:
    char,varchar2,date,number,boolean,long
    举例:
    var1 char(15);
    married boolean :=true;
    psal number(7,2);


    例:
    --使用基本变量类型
    declare
    --定义基本变量类型
    --基本数据类型
    pnumber number(7,2);
    --字符串变量
    pname varchar2(20);
    --日期变量
    pdate date;

    set serveroutput on
    begin
    pnumber :=1;
    dbms_output.put_line(pnumber);

    pname:='Tom';
    dbms_output.put_line(pname);

    pdate:=sysdate;
    dbms_output.put_line(pdate);

    --计算明天的日期
    dbms_output.put_line(pdate+1);
    end;
    语句序列部分
    说明部分:
    引用型变量
    举例:
    my_name emp.ename%type;

    --定义引用型变量:查询并打印7839的姓名和薪水

    set serveroutput on
    declare
    pename emp.ename%type;
    psal emp.sal%type;

    begin
    select ename, sal into pename,psal from emp where empno=7839;
    --打印员工薪水
    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
    select * into emp_rec from emp where empno=7839;
    --打印员工薪水
    dbms_output.put_line(emp_rec.ename||'的薪水是'||emp_rec.sal);
    end;



    begin....end中间部分,如何使用if语句

    1、if 条件 then 语句1;
    语句2;
    end if;

    2、if 条件 then 语句序列1;
    else 语句序列2;
    end if;

    3、if 条件 then 语句;
    elsif 语句 then 语句;
    else 语句;
    end if;

    事例:判断用户在键盘上输入的数字
    说明:1、如何使用if语句
    2、接收一个键盘输入(字符串)
    set serveroutput on;
    --接收一个键盘输入
    --num:地址值 含义是:在该地址上保存了输入的值
    accept num prompt '请输入一个数字(0或1或2)';

    declare
    --定义变量保存用户从键盘输入的数字
    pnum number:=#

    begin
    --执行if语句进行条件判断
    if pnum =0 then dbms_output.put_line('您输入数字是0');
    elsif pnum =1 then dbms_output.put_line('您输入数字是1');
    elsif pnum =1 then dbms_output.put_line('您输入数字是2');
    else dbms_output.put_line('其他数字');
    end if;
    end;

    循环语句:

    (1)while循环
    while total<=25000 Loop
    ...
    total:=total+salary;
    end loop;

    (2)Loop循环
    Loop
    exit[when 条件];
    ....
    end loop;

    (3)for循环
    for i in 1..3 loop
    语序序列;
    end loop;

    事例1
    --------使用while循环打印数字的1~10
    set serveroutput on

    declare
    --定义循环变量
    pnum number:=1;
    begin
    while pnum <=10 loop
    --循环体
    dbms_output.put_line(pnum);
    --使该变量+1
    pnum:=pnum+1;
    end loop;
    end;

    事例2
    ---------使用loop循环打印数字的1~10
    set serveroutput on

    declare
    --定义循环变量
    pnum number:=1;
    begin
    loop
    --退出条件:循环变量大于10
    exit when pnum >10;
    dbms_output.put_line(pnum);
    --使该变量+1
    pnum:=pnum+1;
    end loop;
    end;

    事例3
    ---------使用for循环打印数字的1~10
    declare
    --定义循环变量
    pnum number:=1;
    begin
    for pnum in 1..10 loop
    dbms_output.put_line(pnum);
    end loop;
    end;


    总结:
    1、变量的定义
    基本数据类型变量
    引用型变量
    记录型变量
    2、循环和条件判断

    涨工资未完成。

  • 相关阅读:
    poj 3928 树状数组
    poj 2528 线段树+离散化
    poj 3468 成段增减
    hdu 2795 线段树(纵向)
    2016年江西理工大学C语言程序设计竞赛(高级组)
    2016年江西理工大学C语言程序设计竞赛(初级组)
    2015年江西理工大学C语言程序设计竞赛(高级组)
    江西理工大学南昌校区2016年新生赛
    2014江西理工大学C语言程序竞赛高级组
    2014江西理工大学C语言程序竞赛初级组
  • 原文地址:https://www.cnblogs.com/liuyangfirst/p/6418547.html
Copyright © 2011-2022 走看看