PL/SQL基础

PL/SQL块分类

1、无名块或匿名块(Anonymous):动态构造,只能执行一次,可调用其他程序,但不能被其他程序调用。
2、命名块(Named):带有名称的匿名块,这个名称就是标签。
3、子程序(SubProgram):存储在数据库中的存储过程、函数等。当在数据库上建立好后可以在其他程序中调用。
4、触发器(Trigger):当数据库发生操作时,会触发一些事件,从而自动执行相应的程序。
5、程序包(Package):存储在数据库中的一组子程序、变量定义。
标识符
变量命名方法
命名规则例子
程序变量v_namev_name
程序常量c_namec_company_nme
游标变量cursor_namecursor_emp
异常标志e_namee_too_many
表类型name_table_typeemp_record_type
name_tableemp_table
记录类型name_recordemp_record
绑定变量g_nameg_year_sal

属性类型

1、%TYPE
定义一个变量,其数据类型与已经定义的某个数据变量(尤其是表的某一列)的数据类型相一致,这时可以使用%TYPE。
使用%TYPE特性的优点在于:
1)所引用的数据库列的数据类型可以不必知道
2)所引用的数据库列的数据类型可以实时改变,容易保持一致,不用修改PL/SQL程序

2、%ROWTYPE
返回一个记录类型,其数据类型和数据库表的数据结构相一致,这时可以使用%ROWTYPE。
使用%ROWTYPE特性的优点在于:
1)所引用的数据库中的列的个数和数据类型可以不必知道
2)所引用的数据库中列的个数和数据类型可以实时改变,容易保持一致,不用修改PL/SQL程序
--%TYPE用法
DECLARE
  v_ename emp.ename%TYPE;
BEGIN
  SELECT ename INTO v_ename
  FROM emp WHERE empno = '7369';
  Dbms_Output.put_line('雇员姓名'||v_ename);
END;
--%ROWTYPE用户
DECLARE
  emp_record emp%ROWTYPE;
BEGIN
  SELECT * INTO emp_record
  FROM emp WHERE empno = '7369';
  Dbms_Output.put_line('雇员姓名'||emp_record.ename||',职业'||emp_record.job);
END;

循环结构

LOOP循环语法:
LOOP
  要执行的语句;
  EXIT WHEN <条件语句> --条件满足,退出循环语句
END LOOP;

顺序控制

顺序控制用于按顺序执行语句。顺序控制包括:
1、GOTO语句:表示无条件跳转到指定的标号
2、NULL语句:NULL语句是一个可执行语句,可以用NULL语句来说明“不用做任何事件”的意思,相当于一个占位符或不执行任何操作的空语句,可以使某些语句变得有意义,提高程序的可读性,保证其他语句结构的完整性和正确性。

需求:循环显示变量v_count的值,如果该值大于10则结束循环,并显示该 变量最终值。
DECLARE
  v_count NUMBER := 1;
BEGIN
  LOOP
    Dbms_Output.put_line('v_count的当前值为:'||v_count);
    v_count := v_count + 1;
    IF v_count > 10 THEN
      GOTO labelOffLoop;
    ELSE
      NULL;
    END IF;
  END LOOP;
  <<labelOffLoop>>
  Dbms_Output.put_line('v_count的当前值为:'||v_count);
END;

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值