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

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

 2010-02-18 15:01:11 来源:WEB开发网   
核心提示:下面的示例演示此过程的使用方法:清单 8. ADMIN_CMD过程的使用示例CREATE PROCEDURE test_admin_cmd ()P1: BEGINDECLARE sql_string VARCHAR(200);SET sql_string ='LOAD FROM C:DB9.5_testorg_

下面的示例演示此过程的使用方法:

清单 8. ADMIN_CMD过程的使用示例

CREATE PROCEDURE test_admin_cmd ( )
P1: BEGIN
  DECLARE sql_string VARCHAR(200);
  SET sql_string ='LOAD FROM C:DB9.5_testorg_exp.txt OF DEL
           METHOD P (1, 2, 3, 4, 5) INSERT INTO DB2ADMIN.ORG1
           (DEPTNUMB, DEPTNAME, MANAGER, DIVISION, LOCATION)
           COPY NO INDEXING MODE AUTOSELECT';
  CALL SYSPROC.ADMIN_CMD(sql_string);
END P1

GET DIAGNOSTIC 语句

SQL PL 提供一个 GET DIAGNOSTICS 语句,用于获取前面执行的SQL 语句的相关信息。例如,如果需要查明一个 INSERT、DELETE或UPDATE 语句影响的行数,就可以使用带 ROW_COUNT 选项的GET DIAGNOSTICS 语句提供此信息。

清单 9 是GET DIAGNOSTICS 语句的语法图:

清单 9. GET DIAGNOSTICS 语句的语法

>>-GET DIAGNOSTICS---------------------------------------------->
>--+-SQL-variable-name--=--+-ROW_COUNT---------+-+-------------><
 |            '-DB2_RETURN_STATUS-' |
           '-| condition-information |
-------------------'
condition-information
|--EXCEPTION--1------------------------------------------------->
 .-,------------------------------------------.
           V      |
>----SQL-variable-name--=--+-MESSAGE_TEXT-----+-+---------------|
             '-DB2_TOKEN_STRING-'

可以使用GET DIAGNOSTICS 语句获取以下信息:

前面执行的SQL 语句处理的行数

与前一个 CALL 语句相关联的过程返回的状态值

前面执行的SQL 语句返回的DB2 错误或警告消息文本

SQL-variable 声明取决于希望获得的信息。如果要存储 ROW_COUNT或DB2_RETURN_STATUS,就需??把它声明为 INTEGER;如果要存储错误或警告消息,就应该声明为 varchar(70)。

请注意,GET DIAGNOSTICS 语句不会改变特殊变量 SQLSTATE 和 SQLCODE 的内容。

下面的示例演示 GET DIAGNOSTICS 语句的使用方法:

清单 10. 通过 Get DIAGNOSTICS 语句获取 ROW_COUNT

CREATE PROCEDURE UPDATE_RCOUNT(sales_corr INT, qtr int, OUT row_updated INT)
P1: BEGIN  
  UPDATE SALESBYQUARTER
  SET sales = sales+sales_corr
  WHERE y < year(current date)
   and q = qtr;
  GET DIAGNOSTICS row_updated = ROW_COUNT;
  END P1

清单 11. 通过 GET DIAGNOSTICS 语句获取消息文本

CREATE PROCEDURE mess_text1 (num int, new_status varchar(10),
        OUT p_err_mess varchar(70))
P1: BEGIN
  DECLARE SQLCODE INTEGER default 0;
  DECLARE SQLSTATE CHAR(5) default '';
  DECLARE v_trunc int default 0;

  DECLARE CONTINUE HANDLER FOR SQLEXCEPTION
    BEGIN
      GET DIAGNOSTICS EXCEPTION 1 p_err_mess = MESSAGE_TEXT;
      SET v_trunc = 2;
    END;
  INSERT INTO tab1 VALUES (num, new_status);
  RETURN v_trunc;
END P1

上一页  1 2 3 4 5  下一页

Tags:DB SQL Procedure

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