在学习PL/SQL的变量的时候总感觉跟C、JAVA这类语言很像,但是实际上我还没有搞得很清楚,写博客其实是我在慢慢的消化学过的知识,理解不到位的敬请各位博友多多指教。

1.PL/SQL"记录类型"

PL/SQ声明+定义使用例子:

DECLARE           --声明

TYPE product_rec IS RECORD

(

v_productid    productinfo.productid%TYPE    

v_productname    VARCHAR2(20),

v_productprice    NUMBER(8,2)

);

v_product    product_rec;         --定义

SQL语句(……DBMS_OUTPUT.PUT_LINE('product = ' || v_product.v_productid);……)

C语言结构体声明、定义:

structure student

{int num;

char name[20];

char sex;

int age;

float score;

char addr[30];

};

struct student stu[3];

2.%ROWTYPE声明记录类型数据

DECLARE

v_product productinfo%ROWTYPE;

SQL(……)

productinfo是已存在的表,就好比已经声明好的class,这里直接定义一个该类的对象。

3.PL/SQL索引表类型(关联数组)

DECLARE

TYPE prodt_tab_fst IS TABLE OF productinfo%ROWTYPE

INDEX BY BINARY_INTEGER;   --数组下标的数据类型为BINARY_INTEGER

TYPE prodt_tab_sec IS TABLE OF VARCHAR2(8)

INDEX BY PLS_INTEGER;      --数组下标的数据类型为PLS_INTEGER

 

TYPE prodt_tab_sec IS TABLE OF NUMBER(8);

INDEX BY VARCHAR2(20);     --数组下标的数据类型为VARCHAR2

 

v_prt_row    prodt_tab_fst;

    v_prt    prodt_tab_sec;

 v_prt_chr   prodt_tab_thd;

 类的继承(似乎不是很像),B继承了A,就能直接用B来生成B的对象。这里是prodt_tab_fst继承了另一个表productinfo的属性,然后这就用prodt_tab_fst生成v_prt_row……

4.VARRAY变长数组

DECLARE

TYPE varr IS VARRAY(100) OF VARCHAR2(20);

v_product varr:=varr('1','2');

SQL(……)

这个没什么好说的。