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脚本了。
来段脚本作测试:
以上脚本里定义了一个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代码块中执行;后者则是表复制,在代码块外也可执行,看如下代码段:
代码解析:
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语言中的“+”。
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语言中的“+”。
相关文章推荐
- PL/SQL学习笔记
- PL/SQL 学习笔记(三)----- 从多个表中提取数据
- PL/SQL学习笔记-视图
- PL/SQL学习笔记-常用函数
- PL/SQL学习笔记-函数
- PL/SQL第二课(学习笔记)
- PL/SQL学习笔记-程序包
- PL/SQL学习笔记一
- PL/SQL学习笔记-变量作用域及数据类型深入
- PL/SQL学习笔记-常用函数
- PL/SQL 学习笔记(一)----- pl/sql 基本查询与排序
- PL/SQL学习笔记-常量变量及数据类型初步
- PL/SQL学习笔记一
- PL/SQL学习笔记-异常处理
- 学习笔记:关于PL/SQL 集合类型record、pl/sql表、varray、nested table
- PL/SQL 学习笔记(二)----- pl/sql 查询行函数
- pl/sql学习笔记之二 plsql basics
- pl/sql学习笔记之五 错误管理 error mgt
- PL/SQL学习笔记-循环控制与顺序控制
- PL/SQL学习笔记-触发器