WEB开发网
开发学院数据库DB2 DB2 9.5 SQL Procedure Developer认证考试 735 准... 阅读

DB2 9.5 SQL Procedure Developer认证考试 735 准备,第1部分

 2010-02-16 14:59:34 来源:WEB开发网   
核心提示:如果以‘Too many’ 作为输入参数 new_status 的值调用这个过程,那么在INSERT语句执行期间会产生SQLSTATE ‘22001’,DB2 9.5 SQL Procedure Developer认证考试 735 准备,第1部分(8),控制被转移到 CO

如果以‘Too many’ 作为输入参数 new_status 的值调用这个过程,那么在INSERT语句执行期间会产生SQLSTATE ‘22001’,控制被转移到 CONDITION HANDLER。结果,v_trunc 指示符将被设置为 2,新行将被插入到 TAB1 表中,插入时对 COL2 列使用了截短后的值,该过程最终成功完成。

强制发出异常 -- SIGNAL SQLSTATE

SQL PL 支持发出一个错误或警告条件。这导致一个具有指定 SQLSTATE 的错误或警告被返回,同时返回的还有可选的消息文本。清单 20 显示了SIGNAL语句的语法。

清单 20. SIGNAL语句的语法

>>-SIGNAL------------------------------------------------------->
       .-VALUE-.
>--+-SQLSTATE--+-------+--+-sqlstate-string-constant-+-+-------->
 |           '-variable-name------------' |
           '-condition-name
------------------------------------'
>--+------------------------+----------------------------------><
 '|--+-SET MESSAGE_TEXT--=--diagnostic-string-expression-+------|

可以以包含5 个字符的字符串常量的形式发出一个用户定义的SQLSTATE。它必须以数字 7、8 或 9 或者字母 I 到 Z 开始。

还可以发出一个特定的条件名称,但是必须在包含SIGNAL语句的复合语句中声明它,如下面的清单所示。

DECLARE condition overflow for SQLSTATE ‘22001’;
….
SIGNAL overflow SET MESSAGE_TEXT = ‘Too many characters, truncated’;

清单 21 演示了一个SIGNAL语句的使用。

清单 21. SIGNAL语句的使用

CREATE PROCEDURE sign_test (IN num int, IN new_status varchar(10))
P1: BEGIN
 DECLARE SQLCODE INTEGER default 0;
 DECLARE SQLSTATE CHAR(5) default '';

 IF length (new_status) > 5 THEN
   SIGNAL SQLSTATE '72001' SET MESSAGE_TEXT = 'INPUT VALUE TOO LONG';
 END IF;
 INSERT INTO TAB1 VALUES (num, new_status);
END P1

结束语

在本教程中,您学习了用于编写过程、用户定义函数和触发器的SQL Procedural Language。您学习了SQL Procedure Language 的所有基本要素,包括变量声明和赋值、语法和使用以及用于控制过程逻辑的流程的条件语句和迭代语句。您还学习了如何使用错误处理和结果集。这使您能够构建可集成到数据库应用程序中的定制的、复杂的业务逻辑。

上一页  3 4 5 6 7 8 

Tags:DB SQL Procedure

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接