您的位置:程序门 -> db2 -> 数据库开发



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


[收藏此页] [打印本页]选择字色:背景色:字体:[][][]


请高手帮我看看这个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怎么没有调试工具啊...真麻烦.请熟悉的高手帮我看看.谢谢了.
发表于:2007-12-03 14:09:511楼 得分:0
报什么错,能贴出来吗?
db2有调试工具呀,developer   workbench,常说的dwb,挺好用的。
发表于:2007-12-03 14:24:162楼 得分:0
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 15:07:453楼 得分:0
哎。。db2我觉得根本就是一垃圾,资料又少,工具也不好用。不知道有什么存在意义。。。网上找点资料,都是你抄我我抄你的。。根本没有参考价值。。
发表于:2007-12-03 16:16:264楼 得分:0

in       areaid       integer     --这里没有,
declare       init       int       0;   --declare       init       int     default   0;  

begin----p1:begin

end   ----   end   p1
然后你再看看是否还有错误
发表于:2007-12-04 13:44:155楼 得分:0
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

改成这样简单了,还是不行...
发表于:2007-12-04 16:06:416楼 得分:0
payment.seq_bars_id--这个是哪来的?
发表于:2007-12-05 14:16:587楼 得分:0
这个是建立的一个sequence,虽说现在程序是可以跑起来了,但是心还是有不甘,怎么这么简单的存储过程就搞不定呢??!!!
发表于:2007-12-06 10:34:028楼 得分:50
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


快速检索

最新资讯
热门点击