oracle入门的一些资料

本文介绍了PL/SQL的基础知识,包括块结构、变量与常量的使用、条件与循环语句等,适合初学者快速掌握PL/SQL编程技巧。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

发现一位网友总结的信息很好,特转载过来。
一、块
      1.块结构
          1)块的三个部分
          2)块语法
      2.块的命名和匿名
      3.块的执行
二、变量、常量与字符集
      1.变量
          1)声明变量
          2)给变量赋值
      2.常量
      3.有效字符集
三、分支语语句
      1.条件
          1)IF条件判断逻辑结构
          2)CASE表达式
      2.循环
          1)LOOP…EXIT…END循环控制语句
          2)WHILE…LOOP循环控制语句
          3)FOR…LOOP循环控制语句
      3.跳转
      4.嵌套
四、异常
      1.简介
      2.预定义异常
      3.自定义异常
五、游标
      1.声明游标
      2.打开游标
      3.从游标中取数据
      4.关闭游标
      5.隐式游标
      6.实例
      7.游标的属性
          1)%ISOPEN属性
          2)%FOUND属性
          3)%NOTFOUND属性
          4)%ROWCOUNT属性
六、存储过程
      1.命令格式
      2.调用
      3.释放
      4.实例:
七、函数
      1.命令格式
      2.调用
      3.释放
      4.实例
八、触发器
      1.触发器的创建规则:
      2.可以创建被如下语句所触发的触发器:
      3.注意事项
      4.删除触发器的语句格式为:
      5.实例
九、包
      1.包头
      2.包体
      3.实例
ORACLE PL/SQ入门

一、块

1.块结构
    PL/SQL是一种块结构的语言,组成PL/SQL程序的单元是逻辑块,一个PL/SQL 程序包含了一个或多个逻辑块,每个块都可以划分为三个部分。

  1)块的三个部分
    ①声明部分(Declaration section)
      声明部分包含了变量和常量的数据类型和初始值。这个部分是由关键字DECLARE开始,如果不需要声明变量或常量,那么可以忽略这一部分。
    ②执行部分(Executable section)
      执行部分是PL/SQL块中的指令部分,由关键字BEGIN开始,所有的可执行语句都放在这一部分,其他的PL/SQL块也可以放在这一部分。
    ③异常处理部分(Exception section)
      这一部分是可选的,在这一部分中处理异常或错误,对异常处理的详细讨论在后面进行。

  2)块语法
    PL/SQL块语法结构如下:

[DECLARE]
    Declaration Statements
BEGIN
    Executable Statements
  
[EXCEPTION Exception Handlers]
END


    PL/SQL块中的每一条语句都必须以分号结束,SQL语句可以多行,但分号表示该语句的结束。一行中可以有多条SQL语句,他们之间以分号分隔。每一个PL/SQL块由BEGIN或DECLARE开始,以END结束。注释由--标示。

2.块的命名和匿名
    PL/SQL程序块可以是一个命名的程序块也可以是一个匿名程序块,匿名程序块可以用在服务器端也可以用在客户端。
    执行部分包含了所有的语句和表达式,执行部分以关键字BEGIN开始,以关键字EXCEPTION结束,如果EXCEPTION不存在,那么将以关键字END结束。分号分隔每一条语句,使用赋值操作符:=或SELECT INTO或FETCH INTO给每个变量赋值,执行部分的错误将在异常处理部分解决,在执行部分中可以使用另一个PL/SQL程序块,这种程序块被称为嵌套块。
    所有的SQL数据操作语句都可以用于执行部分,PL/SQL块不能在屏幕上显示SELECT语句的输出。SELECT语句必须包括一个INTO子串或者是游标的一部分,执行部分使用的变量和常量必须首先在声明部分声明,执行部分必须至少包括一条可执行语句,NULL是一条合法的可执行语句,事物控制语句COMMIT和ROLLBACK可以在执行部分使用,数据定义语言(Data Definition language)不能在执行部分中使用,DDL语句与EXECUTE IMMEDIATE一起使用或者是DBMS_SQL调用。

3.块的执行
    SQL*PLUS中匿名的PL/SQL块的执行是在PL/SQL块后输入/来执行。
    命名的程序与匿名程序的执行不同,执行命名的程序块必须使用EXECUTE关键字。
    如果在另一个命名程序块或匿名程序块中执行这个程序,那么就不需要EXECUTE关键字。
  注意:如果在PL/SQL Developer中执行需在EXECUTE前后加上BEGIN和END关键字。

二、变量、常量与字符集

1.变量

  1)声明变量
    声明变量的语句格式如下:
      Variable_Name [CONSTANT] databyte [NOT NULL] [:=DEFAULT EXPRESSION]
  注意:可以在声明变量的同时给变量强制性的加上NOT NULL约束条件,此时变量在初始化时必须赋值。

  2)给变量赋值
    给变量赋值有两种方式:
    ①直接给变量赋值

eno := 7369;
myname :
= 'SCOTT';


    ②用户交互赋值

eno := &empno;


      运行时系统会提示用户输入empno,用户输入的值将存入eno变量。
    ③通过SQL SELECT INTO 或FETCH INTO给变量赋值

SELECT EMP_NAME INTO MyName FROM EMPLOYEES WHERE EMPID = eno;


  注意:只有在该查询返回一行的时候该语句才可以成功否则就会抛出异常。

2.常量
    常量与变量相似,但常量的值在程序内部不能改变,常量的值在定义时赋予,声明方式与变量相似,但必须包括关键字CONSTANT。常量和变量都可被定义为SQL和用户定义的数据类型。
    为了减少这部分程序的修改,编程时使用%TYPE、%ROWTYPE方式声明变量,使变量声明的类型与表中的保持同步,随表的变化而变化,这样的程序在一定程度上具有更强的通用性。

3.有效字符集
① 所有的大写和小写英文字母;
② 数字0-9;
③ 符号:0+一*/<>=!一;:.‘@%,“‘#“&_}{}?[];
PL/SQL标识符的最大长度是30个字符,并且不区分字母的大小写。但是适当地使用大小写,可以提高程序的可读性。

例如:定义如下若干类型变量,常量。

DECLARE
    ORDER_NO    
NUMBER(3);
    CUST_NAME   
VARCHAR2(20);
    ORDER_DATE    DATE;
    EMP_NO      
INTEGER := 25;
  
PI CONSTANT NUMBER := 3.1416;
BEGIN
  
NULL;
END;

 

<!--[if !supportLists]-->①<!--[endif]-->算术操作符

 

+

-

*

/

**

乘方

 

<!--[if !supportLists]-->②<!--[endif]-->关系操作符

 

<

小于

<=

小于等于

>

大于

>=

大于等于

=

等于

!=

不等于

<>

不等于

:=

赋值

 

<!--[if !supportLists]-->③<!--[endif]-->比较操作符

 

IS NULL

如果操作数为NULL返回TRUE

LIKE

比较字符串值

BETWEEN

验证值是否在范围之内

IN

验证操作数在设定的一系列值中

 

<!--[if !supportLists]-->④<!--[endif]-->逻辑操作符

 

AND

两个条件都必须满足

OR

只要满足两个条件中的一个

NOT

取反

 

<!--[if !supportLists]-->

三、分支语语句

1.条件

    1)IF条件判断逻辑结构
    If条件判断逻辑结构有三种表达方式。
    ①表达式一:

IF Condition THEN
    Statement;
END IF;


    该表达式的功能为:若条件为真,执行then后的语句;否则,跳出条件语句执行end if后的语句。
    ②表达式二:

IF Condition THEN
    Statements_1;
ELSE
    Statements_2;
END IF;


    该表达式的功能为:如果条件为真执行then后的语句,否则执行else后的语句。
    ③表达式三:

IF Condition1 THEN
    Statements_1;
ELSEIF Condition2
THEN
    Statements_2;
ELSE
    Statements_3;
END IF;


    该表达式的功能为:如果if后的条件成立,执行then后面的语句,否则判断elseif后面的条件,条件成立执行第二个then后面的语句,否则执行else后的语句。这是条件语句嵌套。IF 可以嵌套,可以在IF 或IF ..ELSE语句中使用IF或IF…ELSE语句。

  2)CASE表达式
    CASE语句的基本格式如下:

CASE Grade
  
WHEN 'A' THEN DBMS_OUTPUT.PUT_LINE ('Excellent');
  
WHEN 'B' THEN DBMS_OUTPUT.PUT_LINE ('Very Good');
  
WHEN 'C' THEN DBMS_OUTPUT.PUT_LINE ('Good');
  
WHEN 'D' THEN DBMS_OUTPUT.PUT_LINE ('Fair');
  
WHEN 'F' THEN DBMS_OUTPUT.PUT_LINE ('Poor');
  
ELSE DBMS_OUTPUT.PUT_LINE ('No such grade');
END CASE;


    CASE语句的功能:首先设定变量的值作为条件,然后顺序检查表达式,一旦从中找到与条件匹配的表达式值,就停止CASE语句的处理。

2.循环

    1)LOOP…EXIT…END循环控制语句
    LOOP循环语句是其中最基本的一种,格式如下:

LOOP
    Statements;
END LOOP;


    这种循环语句是没有终止的,如果不人为控制的话,其中的Statements将会无限地执行。一般可以通过加入EXIT语句来终结该循环。

  2)WHILE…LOOP循环控制语句
    WHILE…LOOP循环控制语句的格式如下:

WHILE Condition
LOOP
    Statements;
END LOOP;


    WHILE…LOOP有一个条件与循环相联系,如果条件为TRUE,则执行循环体内的语句,如果结果为FALSE,则结束循环。

  3)FOR…LOOP循环控制语句
    FOR…LOOP循环控制语句的格式如下:

FOR Counter IN [REVERSE] Start_Range…End_Range
LOOP
    Statements;
END LOOP;


    LOOP和WHILE循环的循环次数都是不确定的,FOR循环的循环次数是固定的,Counter是一个隐式声明的变量,初始值是Start_Range,第二个值是Start_Range + 1,直到End_Range,如果Start_Range等于End _Range,那么循环将执行一次。如果使用了REVERSE关键字,那么范围将是一个降序。

3.跳转
    GOTO语句的格式如下:
      GOTO LABEL;
    执行GOTO语句时,控制会立即转到由标签标记的语句(使用<<>>声明)。PL/SQL中对GOTO语句有一些限制,对于块、循环、IF语句而言,从外层跳转到内层是非法的。

DECLARE
           
NUMBER(3);
           
NUMBER(3);
    V_COUNTER
NUMBER(2);
BEGIN
    X :
= 100;
  
FOR V_COUNTER IN 1 .. 10 LOOP
    
IF V_COUNTER = 4 THEN
      
GOTO end_of_loop;
    
END IF;
      X :
= X + 10;
  
END LOOP;
  
<<end_of_loop>>
    Y :
= X;
    dbms_output.put_line(
'Y:'||Y);
END;


    输出结果为“Y:130”。

4.嵌套
    程序块的内部可以有另一个程序块这种情况称为嵌套。嵌套要注意的是变量,定义在最外部程序块中的变量可以在所有子块中使用,如果在子块中定义了与外部程序块变量相同的变量名,在执行子块时将使用子块中定义的变量。子块中定义的变量不能被父块引用。同样GOTO语句不能由父块跳转道子块中,反之则是合法的。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值