请高手帮我看看这个DB2存储过程,谢谢了!!!

mx1029 2007-12-03 11:21:29
CREATE PROCEDURE payment.batsave_bars (
in number integer,
in areaid integer,
)

LANGUAGE SQL

BEGIN
DECLARE init INT 0;
DECLARE Bar varchar(10);
DECLARE BarCode varchar(10);
DECLARE LoginName varchar(10);
DECLARE ID int;

WHILE (init < number)
DO
SET ID = NEXT VALUE FOR payment.Seq_Bars_Id;
-- insert bars
insert into payment.bars
(id,AREA_ID,BAR_NAME,BAR_CODE,LOGIN_NAME,ADDRESS,CONTACT,MOBILE,TEL,EMAIL,ZIP_CODE,PASSWORD,CREATE_TIME,LAST_MODIFIED,
STATUS,DOWNLOAD_EXPIRE,CREATOR_ID,LAST_MODIFIER_ID,PROFIT_MARGIN)
values
(ID,areaid,Bar||char(init),BarCode||char(init),LoginName||char(init),'','','','','','','',current date,char(current date),
0,char(current date),1,1,1);

-- insert bar_accounts
insert into payment.bar_accounts (BAR_ID,BALANCE,LAST_MODIFIED) values (ID,0,char(current date));

-- insert bar_detail
insert into payment.bar_detail (BAR_ID) values (ID);

SET init = init + 1;

END WHILE;

END

老是报错,我是在MYECLIPSE数据库视图调的...又不知道错在哪里...DB2怎么没有调试工具啊...真麻烦.请熟悉的高手帮我看看.谢谢了.
...全文
159 8 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
yangxiao_jiang 2007-12-06
  • 打赏
  • 举报
回复
DECLARE init INT DEFAULT 0;
DECLARE ID INT DEFAULT 0; ---需要定义id

WHILE (init < number) DO
SET ID = NEXTVAL FOR payment.Seq_Bars_Id;

-- insert bar_detail
insert into payment.bar_detail (BAR_ID) values (ID);

SET init = init + 1;

END WHILE;

我这里调试正常,db2 v8.2
mx1029 2007-12-05
  • 打赏
  • 举报
回复
这个是建立的一个Sequence,虽说现在程序是可以跑起来了,但是心还是有不甘,怎么这么简单的存储过程就搞不定呢??!!!
yangxiao_jiang 2007-12-04
  • 打赏
  • 举报
回复
payment.Seq_Bars_Id--这个是哪来的?
mx1029 2007-12-04
  • 打赏
  • 举报
回复
An unexpected token "END-OF-STATEMENT" was found follwing "END P1". Expected tokens may include: "JOIN <joined_table>"

谢谢楼上的关心.我改过了,不过错误依旧...由于时间问题,没有办法在这上面耗,所以原打算在存储过程中实现的批量插入数据,只能放弃,我只能放到外面的层来循环插入了...哎,为了这个还被不少小人浇了冷水..被打击得不行..

CREATE PROCEDURE payment.batsave_bars (
in number integer,
in areaid integer
)

LANGUAGE SQL

P1:BEGIN
DECLARE init INT DEFAULT 0;

WHILE (init < number) DO
SET ID = NEXT VALUE FOR payment.Seq_Bars_Id;

-- insert bar_detail
insert into payment.bar_detail (BAR_ID) values (ID);

SET init = init + 1;

END WHILE;

END P1

改成这样简单了,还是不行...
yangxiao_jiang 2007-12-03
  • 打赏
  • 举报
回复

in areaid integer --这里没有,
DECLARE init INT 0; --DECLARE init INT DEFAULT 0;

BEGIN----P1:BEGIN

END ---- END P1
然后你再看看是否还有错误
mx1029 2007-12-03
  • 打赏
  • 举报
回复
哎。。DB2我觉得根本就是一垃圾,资料又少,工具也不好用。不知道有什么存在意义。。。网上找点资料,都是你抄我我抄你的。。根本没有参考价值。。
mx1029 2007-12-03
  • 打赏
  • 举报
回复
Error: END-OF-STATEMENT;BEGIN;JOIN <joined_table>
SQLState: 42601
ErrorCode: -104

CREATE PROCEDURE payment.batsave_bars
( in number integer, in areaid integer )

LANGUAGE SQL

BEGIN

(问题就出在这里面,不知道错在哪里)

END
王帆 2007-12-03
  • 打赏
  • 举报
回复
报什么错,能贴出来吗?
db2有调试工具呀,developer workbench,常说的DWB,挺好用的。

5,891

社区成员

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

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