Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1466754
  • 博文数量: 416
  • 博客积分: 13005
  • 博客等级: 上将
  • 技术积分: 3297
  • 用 户 组: 普通用户
  • 注册时间: 2006-04-05 16:26
文章分类

全部博文(416)

文章存档

2014年(1)

2013年(4)

2012年(46)

2011年(64)

2010年(12)

2009年(4)

2008年(40)

2007年(187)

2006年(58)

分类: Oracle

2007-02-02 09:51:44

ORACLE PLSQL使用经验总结_7
声明变量 
一个新的量可在执行部分(executable section)被赋予初始值。
 
变量在声明部分(declaration section
)被声明和初始化。 
PL/SQL 
变量可用于操纵数据(如计算),而无需访问数据库。PL/SQL 变量可在其他涉及变量的应用环境里再使用。PL/SQL 变量可用于暂时存储数据。 
一个PL/SQL块由三部分组成:声明部分(Declarative),执行部分(Executable),异常处理部分(Exception Handling
)。 
BOOLEAN
是个
逻辑变量,它的值只能是TRUE, FALSE 和NULL。 
在声明一个PL/SQL参数
时,可以使用赋值运算符 := 为该参数赋初值。如果没有为参数赋初值,参数会被设置为null。如果参数被定义NOT NULL约束,那么就必须赋初值。 
一个语句里只能声明一个变量。声明变量的语法:
 
identifier [CONSTANT] datatype [NOT NULL] [:= | DEFAULT expr] 
编写可执行语句
 
一旦一个变量被声明,它可以在所有的子嵌套块中引用,但不能在任何外部块中引用。一个变量不能在嵌套块的执行部分被声明。
 
在一个PL/SQL块里的三个部分,声明部分包含变量,常数,游标和用户定义可在其他部分引用的的异常,执行部分包含以BEGIN开始的主程序,如用于操纵数据的SQL语句等,异常处理部分用于指定执行部分出现异常情况时所执行的动作。
 
在内部块(inner block)中声明的变量不能在外部块(outer block)引用,也可以说,在嵌套块(nested block)里声明的变量不能在封闭块(enclosing block)引用,而在封闭块定义的变量可以在嵌套块中以引用。例:
 
1. BEGIN 
2. DECLARE 
3. v_new_tech_id NUMBER := 879563; 
4. v_old_tech_id NUMBER := 874512; 
5. v_rows_updated NUMBER := 1; 
6. BEGIN 
7. UPDATE service 
8. SET technician_id = v_new_tech_id 
9. WHERE technician_id = v_old_tech_id; 
10. v_rows_updated := SQL%ROWCOUNT; 
11. END; 
12. TEXT_IO.PUT_LINE (TO_CHAR(v_rows_updated)); 
13. END; 
第12行出错,在外部块中引用了内部块中声明的变量v_rows_updated。要执行一个已存的block.sql文件,使用以下语法:
 
START block.sql 
一个嵌套块成为封闭块里的一个可执行语句,一个块可嵌套在任何允许放置可执行语句的地方,包括执行部分和异常处理部分。
 
PL/SQL
表达式不能包含组函数,但一个PL/SQL块里的SQL语句可以。
 
当一个语句中有混合的数据类型时,PL/SQL可以动态转变。如:想把一个NUMBER值存进一个VARCHAR2的变量里,PL/SQL会动态地把NUMBER值转变为VARCHAR2类型的字符值。
 
PL/SQL
表达式可以包含SQL函数。 
嵌套
块里的语句不能包含一个异常段。 
单行注释应以双下划线( -- )为前缀,多行注释应在 /* */ 
之中。 
PL/SQL
中的SELECT
语句必须使用INTO子句。 
为避免PL/SQL编码的含糊,ORACLE推荐以下PL/SQL标识符的命名协定: 
1. SQL*Plus substitution variable 
(SQL*Plus替代变量)
p_name 
2. Variable 
(变量)
v_name 
3. Constant 
(常量)c_name 
4. SQL*Plus global variable
(SQL*Plus共用
变量) g_name 
5. Exception
(异常) e_name 
与ORACLE服
务器交互 
外显游标属性用于检验DML语句的结果,在PL/SQL中可以给游标应用四种属性:
 
SQL%ROWCOUNT 
受最近执行的SQL语句影响的行的数目。(一个整数值)
 
SQL%FOUND Boolean
属性,如果最近的SQL语句影响了一行或多行,其值为TRUE
。 
SQL%NOTFOUND Boolean
属性,如果最近的SQL
语句没有影响任何行,其值为TRUE。 
SQL%ISOPEN 
总是为FALSE,原因是PL/SQL总是它们结束执行后立即关闭内隐游标。 
PL/SQL
不支持DDL 和DCL 命令。 
在PL/SQL
块中,使用SELECT语句从数据库检索数据,必须使用INTO子句,而该SELECT语句必须只返回一行,否则会产生错误。 
PL/SQL
的DML语句里不能使用IF THEN语句。
 
如果PL/SQL块中的SELECT语句返回超过一行数据,会产生TOO_MANY_ROWS异常,如果没有返回数据,会产生NO_DATA_FOUND 异常,这些异常可以在块的异常处理部分俘获。
 

阅读(3130) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~