Oracle 快速入门 PL/SQL&游标

目录

        一、PL/SQL概念:

        ①数据类型:

        ②逻辑比较:

        ③控制语句:

        ④循环语句:有三种:

                顺序语句:goto 标名……<<标名>>        ⑤异常:

        ⑥函数:

        二、PL/SQL本章综合代码

        三、游标


一、PL/SQL概念:

                PL/SQL是过程语言PL与结构化查询语言SQL结合而成的编程语言。
                PL/SQL是针对Oracle数据库的;
               它是过程语言 + 结构化查询语言的结合;

   过程语言PL:如变量声明,流程的控制,循环等;
   查询语言SQL:SQL语言,如增、删、改、查等;
 
   PL/SQL是SQL的扩展版,SQL能做的,PL/SQL绝大多数都能做。


        PL/SQL的优点:
                   1.支持SQL:数据操纵命令,事务控制命令,游标控制,SQL函数和SQL运算符;
                   2.支持面向对象编程;
                  3.可移植性,可运行在任何操作系统上;
                   4.经过编译执行,性能佳;
                   5.与SQL紧密集成,简化数据处理,支持SQL数据类型,支持NULL值,支持%type和%rowtype属性类型(oracle中最有意思的);
                   6.安全性

        PL/SQL分成三个部分:
                   1. 声明部分
                   2. 可执行部分
                   3. 异常片理部分


语法结构:

[declare declaration]  --声明部分
begin
    executable  statements  --可执行部分
    [exception  handlers]  --异常区
end;

输出:

select 'abc' from dual;
dbms_output.put_line('abc');

    --打印输出(必带begin)
    begin
        dbms_output.put_line('abc');
    end

赋值:( := )
    --变量声明赋值,并打印

   declare i number(6);
    begin
        i:=77;   //:=赋值,select...into也是赋值
        dbms_output.put_line(i);
    end;

--在emp表中将工号为7369的姓名输出

declare sid number;
sname varchar2(22);
begin
    sid:=7369;
    select ename into sname from emp where empno=sid;  --select...into赋值方式
    dbms_output.put_line(sname);
end;

提示下:在begin里面用select语句,必定要用select…into。

===========================================

        ①数据类型:

                1.标量类型
                2.LOB类型
                3.属性类型:
                  %type:提供某个变量或数据库表列的数据类型
                  %rowtype:提供表中一行的记录类型(非常有特色)
                3.1 %type

        --求7369的入职日期(在不知道该列是什么类型的情况下)
        --申请一个与“入职日期”一样的

declare sid number;
shiredate emp.hiredate%type;  --声明个变量,它的类型与表中某个列的类型一样
begin
    sid:=7369;
    select hiredate into shiredate from emp where empno=sid;
    dbms_output.put_line(shiredate);
end;

--也可以sb shiredate%type;
--求某某的所有信息

declare sid number;
sname emp.ename%type;
sjob emp.job%type;
begin
    sid:=7369;
    select ename,job into sname,sjob from emp where empno=sid;
    dbms_output.put_line(sname||'   '||sjob);
end;

当然,要是表中有很多的列,还像以上这么写吗?
NO,使用行类型:%rowtype;

--查询某某的所有信息

declare sid number;
er emp%rowtype;
begin
    sid:=7369;
    select * into er from emp where empno=sid;
    dbms_output.put_line(er.ename||'   '||er.job);
end;


============================================

输入:& (一般做测试用,其它情况不怎么用)

declare sid number;
er emp%rowtype;
begin
    sid:=&请输入;  --&类似scanner
    select * into er from emp where empno=sid;
    dbms_output.put_line(er.ename||'   '||er.job);
end;

  注意:sid:=&请输入;  --代表录入的是整型
    sid:='&请输入'; --代表录入的是varchar2类型。


        ②逻辑比较:

                        <> , !=

        ③控制语句:

                        if 条件 then
                        ……
                        else或者elsif…then
                        ……
                        end if

例:

--工资大于3500交税,=3500刚好,<3500努力
if语句:

begin
  if sal>3500 then
      dbms_output.put_line('交税');
  elsif sal=3500 then
    dbms_output.put_line('刚好');
  else
    dbms_output.put_line('努力');
  end if;
end;


                case语句:
                                case 
                                    when   then ;
                                    when   then ;
                                else
                                end case;

        ④循环语句:有三种:

                1.loop 无条件循环
                2.while
                3.for

案例:

--打印1~100
declare i number;
begin
    i:=1;
    loop
        dbms_output.put_line(i);
        i:=i+1;
        exit when i=100;    --退出及退出条件
    end loop;
end;



declare i number;
begin
    i:=1;
    <<b_loop>>  --loop循环的名字
    loop
        dbms_output.put_line(i);
        i:=i+1;
        exit b_loop when i=100;    --退出及退出条件
    end loop;
end;
=


--求
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值