ME使用PL/SQL

1、PL/SQL是过程语言(Procedural Language)与结构化查询语言结合而成的编程语言

     PL/SQL是对SQL的扩张

     支持多种数据类型,如大对象和集合类型,可使用条件和循环等控制结构

     可用于创建存储过程、触发器和程序包,给SQL语句的执行添加程序逻辑

     与ORACLE服务器和ORACLE工具紧密集成,具备可移植性、灵活性和安全性

2、支持SQL,在PL/SQL中可以使用:

        数据操作命令    事务控制命令  游标控制   SQL函数和SQL运算符

3、PL/SQL引擎驻留在ORACLE服务器中

     该引擎接受PL/SQL块并对其进行编译执行

4、PL/SQL分为三个部分:声明部分 可执行部分 异常处理部分

 

  声明部分:

          给变量赋值由两种方法:(1)使用赋值语句:=  (2)使用SELECT INTO语句

  PL/SQL支持的内置数据类型:

        (1)标量类型  数字、字符、布尔型、日期时间

         (2) LOB类型 ( 存储非结构化数据块) BFILE BLOB CLOB NCLOB

         (3) 属性类型  %TYPE %ROWTYPE

5、PL/SQL支持的流程控制结构:

     (1)条件控制

         IF语句: 有三种 IF-THEN   IF-THEN-ELSE   IF-THEN-ELSIF

         CASE语句:用于格努据单个变量或表达式与多个值进行比较

                         begin

                                 case  '&grade"

                                  when 'A' then DBMS_OUTPUT.PUT_LINE('YOUYI');

                                  when 'B' then DBMS_OUTPUT.PUT_LINE('YOUXIU');

                                  else DBMS_OUTPUT.PUT_LINE('MEIYOUCICHENGJI');

                               END CASE;

                        END;

    (2) 循环控制

          LOOP循环:  --无条件循环

                        LOOP

                             sequence_of_statement;

                        END LOOP;

          WHILE循环:根据条件循环

                        WHILE condtion LOOP

                              sequence_of_statement

                        END LOOP;

          FOR循环:循环固定的次数

                        FOR  counter in [REVERSE] values1...values2

                             LOOP

                                sequence_of_statement

                             END LOOP;

     (3)顺序控制

          GOTO语句  :无条件的转到标签指定的语句

          NULL语句:什么也不做

                     DECLARE

                          qtyhand itemfiole.qty_hand%type;

                          relevel itemfile.re_level%type;

                    BEGIN

                          SELECT  qty_hand.re_level INTO qtyhand.relevel

                          from itemfile where itemcode='i201';

                          if qtyhand<relevel then

                            GOTO updation;

                         else

                             GOTO quit;

                         end if;

                       <<updation>>

                           update itemfile set qty_hand=qty_hand+re_level

                          where itemcode='i201';

                      <<quit>>

                           NULL;

                     end;

6、动态SQL

  动态SQL是指在PL/SQL程序执行时生成的SQL语句

  编译程序对动态SQL不做处理,而是在程序运行时动态构造语句,对语句进行语法分析并执行

  DDL语句命令和会话控制语句不能再PL/SQL中直接执行,但可以通过动态SQL执行

     DECLARE

       sql_stmt varchar2(200);

       emp_id number(4):=7566;

       emp_rec emp%rowtype;

     BEGIN

      EXECUTE IMMEDIATE

      'create table bouns1 (id number,amt number)';

     

      sql_stmt:='select * from emp where empno=:id';

     EXECUTE IMMEDIATE sql_stmt into emp_rec USING emp_id;

     END;

6、异常有两种l类型

     预定义异常

    用户定义异常

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值