正在看的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]

点赞(103) 打赏

评论列表 共有 0 条评论

暂无评论

微信小程序

微信扫一扫体验

立即
投稿

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部