[经验总结]DB2开发备忘

本文总结了DB2开发中常见的几个问题及其解决方案,包括SQL语句执行后未获取到结果导致的错误、XQuery的text()函数使用限制及数据库停止时遇到的问题等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

做DB2的开发过程中,有一些问题总是容易重现,因为没有及时记录解决办法,经常需要重新将问题分析一遍,所以有必要开贴备忘。

====================================================================================

1 检索数据库时遇到错误:

Native Error Code = -99999
[IBM][CLI Driver] CLI0125E Function sequence error. SQLSTATE=HY010]

原因:

SQL语句执行后,没有得到检索结果,此时调用SQLFetch接口由于取不到内容而出现上述错误。

出现上述问题的代码如下:

snprintf(query,1024*1024,
"declare default element namespace /"http://www.neusoft.com/nsr/mcml/" "
"declare namespace hd=/"http://www.neusoft.com/nsr/mcml/head/"; "
"declare namespace pi=/"http://www.neusoft.com/nsr/mcml/patient_information/"; "
"declare namespace ce=/"http://www.neusoft.com/nsr/mcml/clinical_examination/"; "
"declare namespace ae=/"http://www.neusoft.com/nsr/mcml/auxiliary_examination/"; "
"select id,xmlquery( ... ... )from casedoc;"
);

这段代码中,名字空间声明的位置不对,应该在xmlquery函数内声明,正确的书写方式如下:

snprintf(query,1024*1024,

"select id,xmlquery( "declare default element namespace /"http://www.neusoft.com/nsr/mcml/" "
"declare namespace hd=/"http://www.neusoft.com/nsr/mcml/head/"; "
"declare namespace pi=/"http://www.neusoft.com/nsr/mcml/patient_information/"; "
"declare namespace ce=/"http://www.neusoft.com/nsr/mcml/clinical_examination/"; "
"declare namespace ae=/"http://www.neusoft.com/nsr/mcml/auxiliary_examination/"; "

... ...

)from casedoc;"
);

2 XQuery的text()函数

"for $case in $d/mcml "
"let $sex := $case/hd:head/text() "

在上面的XQuery语句中若hd:head有嵌入的结点,则text函数返回空值,简单说来,text函数只对简单的包含文本的结点有效。

3 执行db2stop出错:

SQL1025N The database manager was not stopped because databases are still active.

可以改用db2stop force命令强制关闭数据库。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值