122.Oracle数据库SQL开发之 PLSQL编程——11g新增加的PLSQL特性

来源:互联网 发布:JSP删除数组 编辑:程序博客网 时间:2024/05/17 18:02

122.Oracle数据库SQL开发之 PLSQL编程——11g新增加的PLSQL特性

1.  SIMPLE_INTEGER类型

欢迎转载,转载请标明出处:http://blog.csdn.net/notbaron/article/details/50087007

SIMPLE_INTEGER类型是BINARY_INTEGER的子类型,SIMPLE_INTEGER的存储范围与BINARY_INTEGER相同,但是SIMPLE_INTEGER不能存储NULL值。

         当使用SIMPLE_INTEGER值时,算术溢出被截断,因此,当发生溢出时,计算不会产生错误。因为溢出错误被忽略,所以存储在SIMPLE_INTEGER中的值可以从正数循环为负数和从负数循环为正数。

         如下:

CREATE PROCEDURE get_area

AS

  v_width  SIMPLE_INTEGER := 10;

  v_heightSIMPLE_INTEGER := 2;

  v_area   SIMPLE_INTEGER := v_width * v_height;

BEGIN

 DBMS_OUTPUT.PUT_LINE('v_area = ' || v_area);

END get_area;

/

调用如下:
store@PDB1>set serveroutput on

store@PDB1> call get_area();

v_area = 20

 

Call completed.

2.  支持在PL/SQL中使用序列

创建表:

CREATETABLE new_products (

  product_id INTEGER CONSTRAINT new_products_pkPRIMARY KEY,

  name VARCHAR2(30) NOT NULL,

  price NUMBER(5, 2)

);

创建序列:

CREATE SEQUENCE s_product_id;

创建过程如下:

CREATE PROCEDURE add_new_products

AS

  v_product_idBINARY_INTEGER;

BEGIN

  -- usenextval to generate the initial sequence number

  v_product_id:= s_product_id.nextval;

 DBMS_OUTPUT.PUT_LINE('v_product_id = ' || v_product_id);

 

  -- add a rowto new_products

  INSERT INTOnew_products

  VALUES(v_product_id, 'Plasma Physics book', 49.95);

 

 DBMS_OUTPUT.PUT_LINE('s_product_id.currval = ' || s_product_id.currval);

 

  -- usenextval to generate the next sequence number

  v_product_id:= s_product_id.nextval;

 DBMS_OUTPUT.PUT_LINE('v_product_id = ' || v_product_id);

 

  -- addanother row to new_products

  INSERT INTOnew_products

  VALUES(v_product_id, 'Quantum Physics book', 69.95);

 

 DBMS_OUTPUT.PUT_LINE('s_product_id.currval = ' || s_product_id.currval);

END add_new_products;

/

执行如下:

store@PDB1> set serveroutput on

store@PDB1> call add_new_products();

v_product_id = 1

s_product_id.currval = 1

v_product_id = 2

s_product_id.currval = 2

 

Call completed.

 

store@PDB1> select * from new_products;

 

PRODUCT_ID NAME                                PRICE

---------- ----------------------------------------

          1 Plasma Physics book                   49.95

          2 Quantum Physics book              69.95

3.  PL/SQL本地机器代码生成

每个PL/SQL程序单元都被编译成中间格式,即机器可读的代码。

每次代码运行时需要进行解释。使用PL/SQL本地编译,PL/SQL被转换成本地代码,并存储在共享库中。

本地代码的运行速度比中间代码的运行速度快得多,因为本地代码在运行之前不必进行解释。11g以前的某些数据库版本中,可以将PL/SQL代码编译成C代码,然后将C代码编译成机器代码,是一项艰苦而又使人困惑的工具。在11g中PL/SQL编译器能够直接生成本地机器代码。只有经验丰富的DBA才能设置数据库生成本地机器代码。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0 0
原创粉丝点击