DB2编程序技巧 (四)
DB2编程序技巧 (四)
发布时间:2016-12-28 来源:查字典编辑
摘要:正在看的db2教程是:DB2编程序技巧(四)。1.10预防字段空值的处理SELECTDEPTNO,DEPTNAME,COALESCE(MGR...

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

SELECTDEPTNO,DEPTNAME,COALESCE(MGRNO,'ABSENT'),ADMRDEPT

FROMDEPARTMENT

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

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

1.11 取得处理的记录数

declarev_countint;

update tb_test set t1='0'

where t2='2';

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

getdiagnostics v_count=ROW_COUNT;

只对update,insert,delete起作用.

不对selectinto有效

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

1、建一sp返回结果集

CREATEPROCEDUREDB2INST1.Proc1()

LANGUAGESQL

resultsets2(返回两个结果集)

------------------------------------------------------------------------

--SQL存储过程

------------------------------------------------------------------------

P1:BEGIN

declarec1cursorwithreturntocallerfor

selectmarket_code

fromtb_market_code;

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

declarec2cursorwithreturntocallerfor

selectmarket_code

fromtb_market_code;

openc1;

openc2;

ENDP1

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

CREATEPROCEDUREDB2INST1.Proc2(

outout_market_codechar(1))

LANGUAGESQL

------------------------------------------------------------------------

--SQL存储过程

------------------------------------------------------------------------

P1:BEGIN

declareloc1,loc2result_set_locatorvarying;

--建立一个结果集数组

callproc1;

--调用该SP返回结果集。

associateresultsetlocator(loc1,loc2)withprocedureproc1;

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

allocatecursor1cursorforresultsetloc1;

allocatecursor2cursorforresultsetloc2;

--将结果集数组分配给cursor

fetchcursor1intoout_market_code;

--直接从结果集中赋值

closecursor1;

ENDP1

3、动态SQL写法

DECLARECURSORC1FORSTMT1;

PREPARESTMT1FROM

'ALLOCATEC2CURSORFORRESULTSET?';

4、注意:

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

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

1.13 类型转换函数

selectcast(currenttimeaschar(8))fromtb_market_code

1.14 存储过程的互相调用

目前,csp可以互相调用。

Sqlsp可以互相调用,

Sqlsp可以调用Csp,

但Csp不可以调用Sqlsp(最新的说法是可以)

1.15 C存储过程参数注意

createprocedurepr_clear_task_ctrl(

ININ_BRANCH_CODEchar(4),

 

[1][2]下一页

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

ININ_TASK_IDchar(2),

ININ_SUB_TASK_IDchar(4),

OUTOUT_SUCCESS_FLAGINTEGER)

DYNAMICRESULTSETS0

LANGUAGEC

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

NODBINFO

FENCED

MODIFIESSQLDATA

EXTERNALNAME'pr_clear_task_ctrl!pr_clear_task_ctrl'@

上一页[1][2]

推荐文章
猜你喜欢
附近的人在看
推荐阅读
拓展阅读
相关阅读
网友关注
最新DB2数据库学习
热门DB2数据库学习
编程开发子分类