您的位置:首页 > 数据库

PL/SQL 学习笔记(1)

2014-06-29 21:27 211 查看
PL/SQL的基本结构

PL/SQL 程序以块为基本单位,整个PL/SQL块分为三部分:声明部分(以DECLARE开头)、执行部分(以BEGIN开头)、异常处理部分(以EXCEPTION开头)。每条语句由;隔开。

使用PL/SQL Developer 测试PL/SQL 语句

可以利用Oracle自带的SQL Plus 执行自己写的PL/SQL脚本,不过不方便。这里我使用了PL/SQL Developer 工具进行脚本的编辑与调试。

在PL/SQL Developer 中选择新建Command Window,然后就可以在其中编写PL/SQL脚本了。

来段脚本作测试:

Connected to Oracle Database 11g Enterprise Edition Release 11.2.0.1.0
Connected as spvdba@ORCL

SQL> SET SERVEROUT ON;
SQL> DECLARE
2  M VARCHAR(128):='HELLO PL/SQL';
3  BEGIN
4  DBMS_OUTPUT.put_line(M);
5  END;
6  /
HELLO PL/SQL
PL/SQL procedure successfully completed

以上脚本里定义了一个Varchar类型的变量M,并为其赋值,然后调用系统提供的 DBMS_OUTPUT.put_line()函数将其值输出,注意加上SET SERVEROUT ON以显示输出信息。

PL/SQL中的SELECT  INTO  FROM  与INSERT  INTO  SELECT   FROM的区别

Example:  select a into b from table1 && insert into table2(field1,field2)select value1,value2 from table1

前者相当于赋值语句,将查询到的a的值赋给变量b,并且需要在PL/SQL代码块中执行;后者则是表复制,在代码块外也可执行,看如下代码段:

SQL> CREATE TABLE SOURCETABLE (
2  ID INT PRIMARY KEY ,
3  NAME VARCHAR(10),
4  ADDR VARCHAR(10) );
Table created

SQL> INSERT INTO SOURCETABLE VALUES ( 1 , 'MARIA' , 'BEIJING' );
1 row inserted

SQL> INSERT INTO SOURCETABLE VALUES ( 2 , 'ANNA' , 'LONDON' );
1 row inserted

SQL> SELECT * FROM SOURCETABLE;
ID NAME       ADDR
--------------------------------------- ---------- ----------
1 MARIA      BEIJING
2 ANNA       LONDON

SQL> DECLARE
2  TYPE DAGE IS RECORD(
3  ID SOURCETABLE.ID%TYPE,
4  NAME SOURCETABLE.NAME%TYPE,
5  ADDR SOURCETABLE.ADDR%TYPE);
6  MMM DAGE;
7  BEGIN
8  SELECT * INTO MMM FROM SOURCETABLE WHERE ID=1;
9  DBMS_OUTPUT.put_line('NAME:  '||MMM.NAME||'  ADDR:  '||MMM.ADDR);
10  END;
11  /
NAME:  MARIA  ADDR:  BEIJING
PL/SQL procedure successfully completed

SQL> CREATE TABLE DESTTABLE(
2  ID INT PRIMARY KEY ,
3  NAME VARCHAR(10),
4  ADDR VARCHAR(10) );
Table created

SQL> INSERT INTO DESTTABLE SELECT * FROM SOURCETABLE WHERE ID=2;
1 row inserted

SQL> SELECT * FROM DESTTABLE;
ID NAME       ADDR
--------------------------------------- ---------- ----------
2 ANNA       LONDON

SQL>

代码解析:

TYPE DAGE IS RECORD 定义了DAGE是一个PL/SQL记录 类型的复合数据类型,语法是:TYPE new_type IS RECORD();

ID SOURCETABLE.ID%TYPE,指定ID的类型与SOURCE表中ID字段的类型一致,使用%TYPE可以使变量获得字段的数据类型,与它类似的还有%ROWTYPE,后者可以使变量获得整个记录的数据类型,例如DAGE SOURCETABLE%ROWTYPE,完全可以代替代码中复杂的TYPE DAGE IS RECORD ()。

MMM DAGE; 即定义一个DAGE类型的变量MMM。“||”运算符是把两个字符串拼接,有点类似于Java语言中的“+”。



内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  plsql plsql developer