在DB2的SQL开发中遇到的一些难题

asjoyray 2007-06-08 09:46:36
1、在DB2触发器、存储过程中是否可以使用数组?若不能使用,是否有可替代的功能?
2、各种数据类型如何转换?例如:数值转成字符(变长)。
3、如何查看序列相关信息?例如:起始值、最大值、当前值等。
4、触发器、存储过程、函数中异常如何处理?
5、DB2中是否存在数据库管道,若存在如何使用(就如同Oracle中的DBMS_PIPE)?
6、在DB2触发器、存储过程中使用游标是否有什么特殊要求?
7、在DB2触发器、存储过程中是否可以定义表变更(即用变量代替表名对表中字段进行引用)?
8、可否提供包含以上应用的触发器、存储过程、函数的范本?
9、可否提供C语言开发的包含连接DB2数据库、读写DB2数据库的范本?
...全文
269 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
fengxiarong707 2007-06-17
  • 打赏
  • 举报
回复
按tab键是想对齐的,不知跳到了‘发出回复’,随即按了enter,就回复了。

上述的如果存储过程,函数出现异常,自动捕捉,在begin ~end里可以定义需要返回的错误。
7、在DB2触发器、存储过程中是否可以定义表变更(即用变量代替表名对表中字段进行引用)?
DECLARE TEMP1 VARCHAR(50);
DECLARE V_SELECTCONTENTS VARCHAR(1000);
SET V_SELECTCONTENTS = 'SELECT '||TEMP1||' FROM TABLE1';
fengxiarong707 2007-06-17
  • 打赏
  • 举报
回复
2、各种数据类型如何转换?例如:数值转成字符(变长)。
cast(1 as char(10));-- 不能是varchar
4、触发器、存储过程、函数中异常如何处理?
DECLARE EXIT HANDLER FOR SQLWARNING,SQLEXCEPTION
BEGIN
SET PROC_RET_CODE = '20001';
END;

DECLARE CONTINUE HANDLER FOR NOT FOUND
BEGIN
-- Do Nothing.
END;
yangxiao_jiang 2007-06-11
  • 打赏
  • 举报
回复
1,可以
2、有函数cast
3、起始值,最大值不会,当前值,preval
4、定义错误号
5、数据库管道指的是两个机器之间通信?如果是的话,db2有联邦数据库的概念
6、没看出有什么要求(或者我不知道)
7、看db2的动态sql语句
8、网上有很多
9、

fetch an attribute value
--------------------------------------------------------------------------------------------
@desc=Rule51:fetch an attribute value
@fenced=true
@results=1
@parmstyle=GENERAL
@sql
EXEC SQL BEGIN DECLARE SECTION;
char brand[80] = "$Id: gbl0003.txt,v 1.2 2005/01/20 22:20:24 gregg Exp $";
EXEC SQL END DECLARE SECTION;

EXEC SQL DECLARE sp_cursor CURSOR FOR

SELECT T.attributevalue,T.NLSID FROM
@schema.Text T

WHERE
T.Enterprise = :Enterprise
AND T.EntityType = :EntityType
AND T.EntityID = :EntityID
AND T.AttributeCode = :AttributeCode
AND T.NLSID in (1,:NLSID)
AND T.ValFrom <= :now AND :now < T.ValTo AND T.EffFrom <= :now AND :now < T.EffTo
order by nlsid
;
@execute
EXEC SQL OPEN sp_cursor;
@parameters
inout ReturnStatus int
in Enterprise varchar(16)
in EntityType varchar(32)
in EntityID int
in AttributeCode varchar(32)
in NLSID int
@end
CathySun118 2007-06-09
  • 打赏
  • 举报
回复
帮顶,

5,889

社区成员

发帖
与我相关
我的任务
社区描述
IBM DB2 是美国IBM公司开发的一套关系型数据库管理系统,它主要的运行环境为UNIX(包括IBM自家的AIX)、Linux、IBM i(旧称OS/400)、z/OS,以及Windows服务器版本
社区管理员
  • DB2
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧