DB2编程序技巧 (四)(db2教程)难以置信

随心笔谈2个月前更新 admin
195 00
🌐 经济型:买域名、轻量云服务器、用途:游戏 网站等 《腾讯云》特点:特价机便宜 适合初学者用 点我优惠购买
🚀 拓展型:买域名、轻量云服务器、用途:游戏 网站等 《阿里云》特点:中档服务器便宜 域名备案事多 点我优惠购买
🛡️ 稳定型:买域名、轻量云服务器、用途:游戏 网站等 《西部数码》 特点:比上两家略贵但是稳定性超好事也少 点我优惠购买

文章摘要

本文介绍了DB2编程技巧的第四章内容,重点围绕以下几个方面展开: 1. **处理空值**:使用`COALESCE`函数替代`ISNull`,该函数能够返回表达式结果集中第一个非空的值,且支持多个表达式。2. **记录数处理**:通过使用`DETERMINATE`关键字,可以在`UPDATE`、`INSERT`或`DELETE`操作后获取修改的记录数。3. **存储过程与游标**:介绍了如何通过存储过程返回结果集,并通过游标动态获取数据。包括使用游标和预存的游标变量,以及通过`PREPARE`关键字动态生成SQL语句的方法。4. **结果集的处理**:详细讲解了如何通过游标和游标变量获取结果集中的数据,并强调了游标在结果集处理中的重要性。5. **存储过程的调用**:描述了如何通过`CREATE Procedure`定义存储过程,并通过预存的游标变量调用其他存储过程,以及`C`语言存储过程如何与`SQL`存储过程互相调用的机制。6. **类型转换函数**:展示了如何使用`CAST`函数将不同数据类型相互转换,例如将当前时间转换为字符类型。7. **存储过程的参数**:强调了在定义`C`语言存储过程中参数的注意事项,包括数据类型的匹配和`IN`参数的使用。 文章内容全面总结了DB2中存储过程的高级功能与技巧,对提高程序的性能和灵活性具有重要意义。


正在看的db2教程是:DB2编程序技巧 (四)。1.10 预防字段空值的处理

SELECT DEPTNO ,DEPTNAME ,COALESCE(MGRNO ,’ABSENT’),ADMRDEPT

FROM DEPARTMENT

   COALESCE函数返回()中表达式列表中第一个不为空的表达式,可以带多个表达式。

   和oracle的isnull类似,但isnull好象只能两个表达式。

1.11 取得处理的记录数

declare v_count int;

update tb_test set t1=’0′

where t2=’2′;

–检查修改的行数,判断指定的记录是否存在

get diagnostics v_ count=ROW_COUNT;     

只对update,insert,delete起作用.

不对select into 有效

1.12 从存储过程返回结果集(游标)的用法

1、建一sp返回结果集

CREATE PROCEDURE DB2INST1.Proc1 (  )

    LANGUAGE SQL

    result sets 2(返回两个结果集)

————————————————————————

— SQL 存储过程 

————————————————————————

P1: BEGIN

        declare c1 cursor  with return to caller for 

            select  market_code

            from    tb_market_code;

        –指定该结果集用于返回给调用者

        declare c2 cursor  with return to caller for 

            select  market_code

            from    tb_market_code;

         open c1;

         open c2;

END P1                                       

2、建一SP调该sp且使用它的结果集

CREATE PROCEDURE DB2INST1.Proc2 (

out out_market_code char(1))

    LANGUAGE SQL

————————————————————————

— SQL 存储过程 

————————————————————————

P1: BEGIN

 declare loc1,loc2 result_set_locator varying; 

–建立一个结果集数组

call proc1;

–调用该SP返回结果集。

associate result set locator(loc1,loc2) with procedure proc1;

–将返回结果集和结果集数组关联

 allocate cursor1 cursor for result set loc1;

 allocate cursor2 cursor for result set loc2;

–将结果集数组分配给cursor

fetch  cursor1 into out_market_code;

–直接从结果集中赋值

close cursor1;         

END P1

3、动态SQL写法

     DECLARE CURSOR C1 FOR STMT1; 

     PREPARE STMT1 FROM

        ‘ALLOCATE C2 CURSOR FOR RESULT SET ?’;

4、注意:

一、 如果一个sp调用好几次,只能取到最近一次调用的结果集。

二、 allocate的cursor不能再次open,但可以close,是close sp中的对应cursor。

1.13 类型转换函数

select cast ( current time as char(8)) from tb_market_code

1.14 存储过程的互相调用

目前,c sp可以互相调用。

Sql sp 可以互相调用,

Sql sp 可以调用C sp,

但C sp 不可以调用Sql sp(最新的说法是可以)

1.15 C存储过程参数注意

create procedure pr_clear_task_ctrl(

IN IN_BRANCH_CODE char(4),

  

[1] [2] 下一页

正在看的db2教程是:DB2编程序技巧 (四)。;            IN IN_TRADEDATE   char(8),

           IN IN_TASK_ID     char(2),

       IN IN_SUB_TASK_ID char(4),

       OUT OUT_SUCCESS_FLAG INTEGER )

DYNAMIC RESULT SETS 0

LANGUAGE C 

PARAMETER STYLE GENERAL WITH NULLS(如果不是这样,sql 的sp将不能调用该用c写的存储过程,产生保护性错误)

NO DBINFO

FENCED

MODIFIES SQL DATA

EXTERNAL NAME ‘pr_clear_task_ctrl!pr_clear_task_ctrl’@

上一页  [1] [2] 

© 版权声明

相关文章