首页  ·  知识 ·  
Label
      编辑:  图片来源:网络

1.块结构:
PL/SQL程序被分割为称为块(block)的结构,块中包含PL/SQL程序语句。典型的PL/SQL块具有
以下的结构:
[DECLARE
    declaration_statements
]
BEGIN
    executable_statements
[EXCEPTION
    exception_handling_statements
]
END;
语法元素:
declaration_statement :
  声明了在块的其余部分中使用的变量。这些变量是块的局部变量。
executable_statment:
  块的实际可执行语句。
exeception_handling_statement:
  处理可执行语句可能发生的错误。

注意:每条语句都要有(;)分号结尾,块使用END关键字结尾。

例程:
DECLARE
    width INTEGER :=2;
    height INTEGER ;
    area INTEGER ;
BEGIN
    height :=3 ;
    area :=width*height ;
    DBMS_OUTPUT.PUT_LINE('Area='||area); //表示在屏幕上显示;
END;
/   //表示执行这个PL/SQL块;

注意:必须在SQL*PLUS中提前输入:SET SERVEROUTPUT ON 才能显示的输出。

2.变量类型:
变量名   变量类型 ;/ : = [初始数值] ;
  id   INTEGER ;
name   VARCHAR2(20) :='BinMing';

  * proname product.price%TYPE ; // (%TYPE) 表示proname 的类型要和product表中的price的类型一致。

3.条件逻辑:
1.IF [条件1] THEN
    [语句段];
  ELSEIF [条件2] THEN
      .
.
.
  END IF ;


2.循环(简单循环/WHILE/FOR)
  单循环:
LOOP
  statements
END LOOP;
//一直循环语句段,除非显示的输入EXIT / EXIT WHEN 语句结束循环
     
  WHILE循环:
WHILE condition LOOP
    statements
END LOOP;

example:
  count:=0;
  WHILE counter<6 LOOP
    count :=count + 1 ;
  END LOOP ;

3.FOR循环:
FOR loop_variable IN [REVERSE] lower_bound..upper_bound LOOP
  statements;
END LOOP;

example:
  FOR id IN 3..6 LOOP
  DBMS_OUTPUT.PUT_LINE(id);
  END LOOP;


4.游标的使用:

步骤一: 声明变量来存储例值 :

DECLARE
  id products.id%TYPE;
  ......
  ......

步骤二: 声明游标 :

游标要放在声明部分中。

CURSOR product_cursor IS  
  SELECT
  id,name,price
  FROM
  products
  ORDER BY
  id;

        //声明了游标的类型或着说方法

步骤三:打开游标 :
使用OPEN语句打开游标,必须放在块的可执行部分中。

  OPEN product_cursor ;

步骤四: 从游标中获取行:
使用 FETCH 语句读取游标中的行:
  FETCH:
  product_cursor;
  INTO
  id,name,price;   //把值存储到上面声明的三个变量中.
// 如果游标返回可能包含很多行的话,就要循环取出每一行数据,
  可以使用product_cursor%NOTFOUND决定虚幻何时结束。

步骤五: 关闭游标:
CLOSE product_cursor;

5.过程:
    使用PL/SQL创建包含一组SQL语句和PL/SQL语句的过程。
    可以使用这些过程将业务逻辑集中在数据库中,访问数据
    库的任何程序都可以使用这些过程。

    使用CREATE PROCEDURE 语句创建PL/SQL过程:
CREATE[OR REPLACE] PROCEDURE procedure_name     //过程名字
[(parameter_name)[IN|OUT|IN OUT] type[, ...])] //过程使用的参数
{IS|AS}
{
  body
};

.IN 参数的默认模式。如果在过程运行时参数以有一个值,而且这个值在过程体中不能修改,
  那么就应该指定这种模式。
.OUT 如果参数的值只在过程体中设置,那么就应该指定这种模式。
.IN OUT 如果在过程被调用时参数可能已经有一个值,但是这个值可以在过程体中修改,那
么就应该指定这种模式。


例子程序:
CREATE PROCEDURE update_product_price(

  p_product_id IN products.id%TYPE ;
  p_factor   IN NUMBER ;
 
  ) AS

  product_count INTEGER ;

  BEGIN
  SELECT
  COUNT(*)
  INTO
  product_count
  FROM
  products
  WHERE
  id = p_product_id;

  IF product_count = 1 THEN
  UPDATE
      products
  SET
      price = price * p_factor ;
  COMMIT ;
  END IF ;

  END update_product_price ;
  /
http://clsoftprog.blog.ccidnet.com/blog/ccid/do_showone/tid_113990.html

本文作者:佚名 来源:http://clsoftprog.blog.ccidnet.com/blog/ccid/do_sh
CIO之家 www.ciozj.com 微信公众号:imciow
   
免责声明:本站转载此文章旨在分享信息,不代表对其内容的完全认同。文章来源已尽可能注明,若涉及版权问题,请及时与我们联系,我们将积极配合处理。同时,我们无法对文章内容的真实性、准确性及完整性进行完全保证,对于因文章内容而产生的任何后果,本账号不承担法律责任。转载仅出于传播目的,读者应自行对内容进行核实与判断。请谨慎参考文章信息,一切责任由读者自行承担。
延伸阅读
也许感兴趣的
我们推荐的
主题最新
看看其它的
收藏至微信